2014-10-01 126 views
0

閱讀有關Activity Lifecycle的官方文檔後,我遇到了一個問題 - 我如何理解onDestroy()中我的Activity被系統殺死或用戶完成了?我認爲,在官方網頁它不是完全清楚:Android生命週期問題

如果活動被暫停或停止,該系統可以通過要求它結束(調用finish()方法),或 從 內存砸簡單地殺死它的過程。當活動再次打開時(在 完成或死亡後),它必須全部創建。

但低一點的next()寫的onDestroy:

叫活性被破壞之前。這是活動將收到的最後一個電話號碼 。可以調用它,因爲 活動正在完成(有人稱之爲finish()),或者因爲 系統暫時銷燬活動的此實例以節省 空間。您可以使用isFinishing()方法區分這兩種情況。

所以,我建議,完成()可以通過系統殺死我的活動(在被稱爲那麼,如何區分? - 我的活動是由系統中的onDestroy()

+1

看看'onUserLeaveHint()'http://developer.android.com/reference/android/app/Activity.html#onUserLeaveHint() – 2014-10-01 09:49:47

+0

我會測試它,謝謝! – 2014-10-01 09:57:32

回答

1

onDestroy()不保證被調用(例如,應用程序在後臺,操作系統實際上殺死它以獲得資源),所以在這裏沒有任何理由讓你檢查isFinishing()

onPause()處理您所需要的內容,如果您想知道它是否正在完成,請在此處檢查isFinishing()

如果你想要做更多的具體方案,其中用戶已經觸發結束應用程序,然後將其添加到onUserLeavesHint(),這將只是onPause()之前調用 - 如果這些東西需要經過一些東西發生你在onPause()做,那麼你可以Activityboolean標誌設置爲false從開始,然後爲onUserLeavesHint()爲真,並在您的onPause()查詢。

1

殺死或成品由用戶如果isFinishing()返回true,則應用程序的某個部分調用finish()或用戶按下了返回按鈕。

+0

「你的應用程序的一部分」下的含義是什麼? – 2014-10-01 09:56:07

+0

基本上,您應用程序中的任何代碼都可以調用Activity.finish - 活動本身,另一個活動,一些服務,廣播接收器等。 – Okas 2014-10-01 09:57:34