2013-07-02 48 views
0

我試圖維持一個日誌,退出應用程序時。我已經使用此代碼:如何檢查應用程序是否正在關閉android

public void onDestroy() { 
    super.onDestroy();  
    Log.d("D", "Destroyed");  
} 

但是,這隻適用於當我按Back按鈕。當我按Home按鈕時,應用程序Pauses,如果我從任務管理器關閉此應用程序,則不會調用onDestroy函數。如何處理這個?

有什麼想法?

回答

1

您無法處理從任務管理器關閉應用程序。在這種情況下,你正在殺死該應用程序,並且不會調用onDestroy。您應該全部清理

+0

+1提到「你應該在onPause中全部清理」。 – Raghunandan

0

Android Developer Guide

有些情況下,你的活動被摧毀,由於 正常的應用程序行爲的幾個場景中,當用戶按下後退按鈕或 您的活動由信號自身的破壞,如調用finish()。如果系統當前停止並且 長時間未使用,或者前臺活動需要更多資源 ,則系統還可能會破壞您的活動,因此係統必須關閉後臺進程以恢復內存爲 。

當您通過按主頁按鈕切換應用程序時,Android會暫停活動並在您返回到活動時恢復活動。

大多數情況下,操作系統決定何時退出應用程序,因此在活動被破壞時記錄日誌沒有任何意義。我會建議覆蓋onPause()onStop()方法

0

你可以在onPause()方法中做你的東西。
在你的情況:
如果End Process被用在任務管理器中的進程列表中,那麼在應用程序中沒有任何東西被調用,應用程序被簡單地終止。
如果從應用程序列表中使用End Task,則將WM_CLOSE發送到該窗口,從而允許應用程序執行清理。

0

onDestroy()在活動完成其生命週期時被調用。在活動的生命週期中它也被稱爲一次。

操作系統決定什麼時候事情「消失」。 onDestroy在那裏讓你的應用程序有最後的機會清理事件之前,活動確實被破壞。

相關問題