2012-09-08 132 views
0

我對Android活動生命週期非常熟悉,但我覺得我錯過了一些在這裏應該很明顯的東西。如何讓Android應用程序從暫停狀態恢復並恢復正常

我有一個多活動的Android應用程序;它使用靜態變量(在應用程序類中)來保持在不同視圖中使用的各種對象的句柄。當應用程序暫停(退出)和Android(可能)清理內存以維護前臺進程時,會出現問題。當用戶恢復應用程序時,它偶爾(並非總是)似乎回來並在用戶離開的活動中恢復,但靜態變量爲空。更糟糕的是,活動有時似乎仍然會繼續,靜態變量仍然存在,但對象中的內部變量爲空。

我最終實現了一個簡單的完整性檢查,檢查的靜態不清零(也是最重要的內相關對象的變量),並返回該應用啓動,如果它失敗。這確實減少了很多問題,但我仍然偶爾會看到這個問題,因爲檢查每個簡歷()的一切都是不切實際的。

我真正需要的是應用程序從頭開始重新啓動,如果是Android OS決定它需要從內存中清除任何非GC而應用程序是無效的。我覺得應該有一個優雅的方式來做到這一點,但沒有注意到文檔中的任何內容。

有什麼想法?別人如何避免這個問題?

回答

3

如果Android決定完全終止進程,那麼使用Application類保留狀態可能會導致意外的行爲。檢出this answer to a similar question 即您應該在您的Activity生命週期回調中使用某種持久性(SharedPreferences或某些數據庫)。

+0

感謝您參考該帖子。持久性的問題在於,每次用戶切換活動(需要太多時間)時,保存和恢復狀態並非切實可行 - 並且應用程序狀態完全持久將是相當困難的。不過,這個鏈接給了我一些想法。 –