我正在開發一個由10多個活動組成的Android應用程序。我有幾個狀態對象,幾乎在每個活動中都可以訪問,爲此,這些對象在MyApplication類中作爲全局靜態變量實現。Android應用程序類中的持久狀態
我注意到,只要用戶在應用程序中,這種方法就可以。但是,當他按下主頁按鈕並打開其他應用程序,然後通過「最近的活動」按鈕返回到我的應用程序時,我看到Android系統重置了MyApplication中的靜態圖,因此我必須處理NullPointerExceptions。我知道這種行爲是由Android殺死和重新創建應用程序進程造成的。
我知道持久這種數據的最好方法是使用SharedPreferences或SQLite,並且我沒有問題檢查MyCate == null是否在onCreate並恢復它,但問題是我沒有知道當正確地存儲我的狀態對象(在首選項或數據庫中)。我試圖覆蓋MyApplication的finalize() - 不行,我看到onLowMemory可能不會被調用,我不明白我該如何使用onPause,OnStop等等,因爲我有很多活動,以至於序列化反序列化會相當多減慢應用程序。
有什麼想法? 在此先感謝!
如果數據不是很大,請將您的持久性對象設置爲Singleton。 – vrs
因此,當Android操作系統將重新創建應用程序進程,因此重新創建應用程序類,這個對象將恢復其狀態? – rrdev
應用程序的重新啓動/休閒取決於幾個因素,如內存,應用程序的實時數量,當前沒有運行的服務等。因此,將您的數據保存在主要活動中銷燬或在Destroy上應用。 – vrs