5

在我當前的應用程序中,當我第一次加載Activity時觸發onResume函數。我查看了Activity Lifecycle,但我沒有找到防止這種情況發生的方法。Android - 預防onResume()函數,如果第一次加載Activity(不使用SharedPreferences)

第一次加載Activity時是否可以防止加載onResume()函數,而不使用SharedPreferences?

+2

爲什麼你不想要做它?打破Android一致生命週期的重要性如何?你不能在onCreate上做嗎? – RvdK

+0

[Android onCreate onResume]的可能重複(http://stackoverflow.com/questions/6175679/android-oncreate-onresume) –

+0

[Android onCreate onResume]的可能重複(http://stackoverflow.com/questions/6175679/ android-oncreate-onresume) –

回答

17

首先,正如RvdK所說,您不應該修改Android Activity生命週期,您可能必須重新設計您的活動行爲以符合它。

無論如何,這是我看到的最好辦法:

1.創建一個布爾變量的活動

public class MyActivity extends Activity{ 
    boolean shouldExecuteOnResume; 
    // The rest of the code from here.. 
} 

2.設置它的裏面的onCreate假內:

public void onCreate(){ 
    shouldExecuteOnResume = false 
} 

3.然後在你的onResume:

public void onResume(){ 
    if(shouldExecuteOnResume){ 
    // Your onResume Code Here 
    } else{ 
    shouldExecuteOnResume = true; 
    } 

} 

通過這種方式,您的onResume將不會在第一次執行(shouldExecuteOnResume爲false),但它會在活動加載的其他所有時間執行(因爲shouldExecuteOnResume將爲true)。 如果活動隨後被下一次加載(由用戶或系統),將再次調用onCreate方法,因此onResume將不會執行,等等。

+0

謝謝你的回答。我也使用了你提到的同樣的方法,但是當我從另一個活動啓動「MyActivity」活動時,變量shouldExecuteOnResume被重置。似乎每次我調用MyActivity活動時,都會使用現有實例創建新實例,而不是使用它。我希望應用程序使用MyActivity的現有實例。 – Jack

+0

你可以嘗試使變量靜態,但我想問題是,你永遠不知道是否/當你的應用程序被系統殺死。你可以嘗試在onStop中添加一些其他控件來檢查發生了什麼.. –

+0

謝謝,當我使shouldExecuteOnResume靜態時它工作。 – Jack

相關問題