2012-10-22 85 views
0

是否可以在低內存時攔截系統關閉我的應用程序的事件?我知道有一種方法「onLowMemory」,但這並不意味着我的應用程序在被調用後會被關閉。當系統在低內存上關閉應用程序時保存狀態

我的問題是,我正在共同開發一個使用大量靜態數據的應用程序(我知道應該避免,但這不是我的決定,此時幾乎不可能改變這一事實)。如果我按回家,不回到這個應用程序的例如。 10小時它可能會強制關閉,因爲靜態數據不存在了(應用程序被系統殺死)。

是否有可能知道應用何時將被系統殺死?我會將靜態數據存儲在某個地方,以便在重新創建應用程序時獲取。有什麼解決方法?也許,如果連接到這樣的事件是不可能的,我可以做一個服務,每隔幾分鐘就會保存這個狀態,所以當應用程序被殺時,我可能會有最新的靜態數據?

您是否遇到此問題?你有什麼解決方案/建議?

+0

如果10小時後數據不再存在,可能是因爲您的應用程序被殺害了。在這種情況下,您將不得不加載數據。如果強制關閉,它會不會總是強制關閉,因爲當應用程序第一次啓動時,數據不在那裏。 onLowMemory()是最好的嘗試。還有'onTrimMemory()',它給你留下的內存級別。我很抱歉,這是一個非常模糊的問題,我認爲可能會誤解操作系統 –

+0

@GregGiacovelli中的進程,內存和狀態是如何工作/與您的應用程序相關的,我知道這是因爲我的應用程序被殺害了。強制關閉與應用程序無法加載此靜態數據有關(所有引用都爲空等)。我希望只是爲了找到保存數據的最佳時機(就在內存不足之前 - 被操作系統殺死)。 – kajman

回答

1

您的應用程序是否在後臺對此靜態數據執行任何操作?你可以保存所有內容在onPause()。一旦被稱爲你的應用程序在任何時候都可以無需任何進一步的回調,所以如果需要保存的東西,是這樣做的地方。

+0

...或類似的東西。即使您無法更改體系結構,爲了確保您的數據能夠可靠地保存,對其進行改變也許是個好主意。更改時保存數據,某些事務性或冪等變化等可能是更好的選擇。否則,您仍然有數據丟失的可能性。 –

相關問題