我是新來的android開發,現在我想了解android活動的生命週期。onPause方法沒有被調用
我有這些方法對logcat的打印生命週期的過程:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d(tag, "In the onCreate() event");
}
public void onStart() {
super.onStart();
Log.d(tag, "In the onStart() event");
}
public void onRestart() {
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
public void onResume() {
super.onResume();
Log.d(tag, "In the onResume() event");
}
public void onStop() {
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void onDestroy() {
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
問題是在onPause()永遠不會被調用。我嘗試按Home鍵,從最近的應用程序列表中選擇其他應用程序,關閉屏幕顯示,但它只是直接調用onStop(),而不是調用onPause(),然後onStop()。我正在閱讀的書說,如果活動被推入後臺,它支持onPause(),然後是onStop()。
本書內容:
Click the Phone button on the Android emulator so that the activity is pushed to the background.
Observe the output in the LogCat window:
11-16 06:32:00.585: D/Lifecycle(559): In the onPause() event
11-16 06:32:05.015: D/Lifecycle(559): In the onStop() event
我跑4.2.2測試真實設備和虛擬設備運行2.3.3,但結果是一樣的。我只是誤解了onPause的目的,或者我正在做錯onPause被調用?
編輯:你可以告訴我onStop()是否在onPause()之後調用什麼時候調用onResume()?是不是onResume支持恢復由onPause()暫停?在我的測試程序中,onResume()僅在onStart()之後在onPause()之後調用。可能是因爲我只有一項活動?
你不重寫'Activity.onPause'。 – adneal
該代碼不顯示任何'onPause()'方法的日誌記錄。你怎麼知道它沒有被調用?相信我......它會被調用。 – Squonk
感謝大家回答我愚蠢的問題。我無法相信我沒有注意到這一點。 :( –