2016-02-12 52 views
0

我們有一個很難重現應用程序的問題。使用情況如下:有沒有一種方法在android內部知道什麼時候系統要殺我的應用程序?

  • 用戶打開應用程序
  • 用戶離開應用程序在後臺
  • 用戶openes 5至7個應用
  • 系統殺死我們的應用程序
  • 當用戶試圖恢復應用程序,應用程序崩潰,由於NullPointerException

我試圖使用控制檯日誌,Application類方法onTrimMemory()onLowMemory()但這種方法沒有被調用。是否有任何方法或回調我可以聽到知道什麼時候Android系統將殺死我的應用程序,因爲更多的應用程序被打開,在這種情況下,我做了什麼?

+0

嘗試返回到您的應用程序ovveride在活動代碼的方法,而不是應用程序的一個 – Massimo

+0

你正確地宣佈你您的清單中的應用課程? – malrok44

+0

據我所知,這是不可能的直接方式(我會很高興被反駁,因爲我也曾這樣搜索過)。間接地,你可以實現某種保持活躍的信號。使用它可以讓您的應用程序仍然顯示出來(所以其他閒置的後臺應用程序將在您的應用程序之前被殺死)或檢查最後一次保持活動信號的時間戳以查看應用程序在達到此檢查之前已經死亡(導致重新創建所有必要的部分)。 – chevalier

回答

2

您可以在onSaveInstanceState()中保存所需的任何狀態並將它們恢復到onRestoreInstanceState()中。 onDestroy()是系統在您的應用程序處於後臺時經常調用的清除空間的方式,但不保證被調用,所以最好已經將狀態保存在onSaveInstanceState()中。

0

是否有任何方法或回調我可以聽到知道什麼時候Android系統將殺死我的應用程序,因爲有更多的應用程序被打開,在這種情況下,我做了什麼?

不是。根據具體情況,將調用運行活動和服務的onDestroy()

我們有一個很難複製的問題,一個應用程序

,應該在幾秒鐘之內可重複:

  1. 運行你的應用程序。

  2. 切換到另一個應用程序。

  3. 從您的IDE中終止應用程序的進程(例如,「Android監視器」工具窗口中的「終止應用程序」工具欄按鈕)。

  4. 嘗試從概覽屏幕(又名,近期任務列表)

相關問題