我試圖維持一個日誌,退出應用程序時。我已經使用此代碼:如何檢查應用程序是否正在關閉android
public void onDestroy() {
super.onDestroy();
Log.d("D", "Destroyed");
}
但是,這隻適用於當我按Back
按鈕。當我按Home
按鈕時,應用程序Pauses
,如果我從任務管理器關閉此應用程序,則不會調用onDestroy
函數。如何處理這個?
有什麼想法?
我試圖維持一個日誌,退出應用程序時。我已經使用此代碼:如何檢查應用程序是否正在關閉android
public void onDestroy() {
super.onDestroy();
Log.d("D", "Destroyed");
}
但是,這隻適用於當我按Back
按鈕。當我按Home
按鈕時,應用程序Pauses
,如果我從任務管理器關閉此應用程序,則不會調用onDestroy
函數。如何處理這個?
有什麼想法?
您無法處理從任務管理器關閉應用程序。在這種情況下,你正在殺死該應用程序,並且不會調用onDestroy
。您應該全部清理
有些情況下,你的活動被摧毀,由於 正常的應用程序行爲的幾個場景中,當用戶按下後退按鈕或 您的活動由信號自身的破壞,如調用finish()。如果系統當前停止並且 長時間未使用,或者前臺活動需要更多資源 ,則系統還可能會破壞您的活動,因此係統必須關閉後臺進程以恢復內存爲 。
當您通過按主頁按鈕切換應用程序時,Android會暫停活動並在您返回到活動時恢復活動。
大多數情況下,操作系統決定何時退出應用程序,因此在活動被破壞時記錄日誌沒有任何意義。我會建議覆蓋onPause()
或onStop()
方法
你可以在onPause()
方法中做你的東西。
在你的情況:
如果End Process
被用在任務管理器中的進程列表中,那麼在應用程序中沒有任何東西被調用,應用程序被簡單地終止。
如果從應用程序列表中使用End Task
,則將WM_CLOSE
發送到該窗口,從而允許應用程序執行清理。
onDestroy()
在活動完成其生命週期時被調用。在活動的生命週期中它也被稱爲一次。
操作系統決定什麼時候事情「消失」。 onDestroy
在那裏讓你的應用程序有最後的機會清理事件之前,活動確實被破壞。
+1提到「你應該在onPause中全部清理」。 – Raghunandan