你必須採取完全不同的方法。無論您是以startActivity()
還是startActivityForResult()
開始活動,因爲onCreate()
,onStart()
和onResume()
將在您啓動活動時被調用。
現在,如果您的Activity類中有一個方法啓動另一個線程來完成一些工作,那麼您必須使用標誌。如果您的Activity需要在第一次執行時自動啓動線程,那麼您必須將其包裝在if子句中以檢查您在第一次運行時設置的標誌。
這個想法是讓您的活動在您的Application
實例或SharedPreferences
線程第一次執行時將布爾值設置爲true。當你回到那個Activity並且不希望這個線程由於被調用onCreate()
而被自動運行時,那麼你必須將你的調用代碼包裹在if子句中,就像下面的例子。
這裏是一個例子。
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
// Other stuff
if (!YourApplicationInstance.wasCalled) {
// Run your thread or do something else you want to do only once.
// Set the wasCalled flag to true to not run this code again
// if onCreate() is called a second time.
YourApplicationInstance.wasCalled = true;
}
}
你必須閱讀Using Application context everywhere?瞭解如何實現我的僞類YourApplicationInstance
。
**注意**:注意'if'語句中的'!' – Kgrover