2012-07-02 22 views
0

從來就Android程序,其保持在延伸的應用類的一個類的一些靜態對象,使用相同的方法所示例here失去了一個擴展應用類。方面的數據時應用程序被關閉

是這個類包含的對象是共享的,所有的活動之間操縱我的應用程序。

一切運行良好,但是,前一段時間,我注意到當應用程序在背景上運行一段時間,當它恢復時,存儲在擴展類中的數據已經消失,應用程序開始拋出很多NullReference異常。

我認爲,這是因爲對應用的操作系統正在臨時銷燬,重新創建時,我們需要再次使用它。

那麼,我該如何處理這種情況?有沒有什麼辦法可以發現應用程序正在被臨時銷燬,而沒有訂閱活動的onDestroy事件?在我做的測試中,當我要求我的應用程序的後臺進程停止時,onDestroy事件未被調用。

非常感謝!

回答

0

有沒有辦法來確定何時proccess會被殺死,所以你總是應該在一些地方保存重要的數據(SD卡爲例)和它的onCreate您的App類的()方法恢復。

另請參考onLowMemory()和onTrimMemory(),釋放內存中所有不需要的數據以幫助操作系統防止破壞應用程序,導致確定應用程序的原因之一是內存不足。

+0

thnaks很多爲您的幫助! – regisxp

+0

我看不到Application類的「onTrimMemory」方法。你能給我簡要的細節嗎? – Dharmendra

0

沒有,有沒有辦法告訴當你需要堅持,你在那種靜態變量存儲數據。至少就我所知,系統沒有迴應這個問題。

所以,你應該只使用靜態變量來存儲來自peristent源訪問的臨時數據,或緩存數據。我在很多項目中都遇到過這個問題,並且我始終最終將intents/shared prefs/sqlite /等用於跨活動的可靠商店數據。

+0

非常感謝您的幫助! – regisxp

相關問題