2012-03-14 86 views
0

我使用幾個地圖緩存我的活動中的數據。當我操縱回活動時,地圖已被GC收集並拋出一個空值異常。所以我應該保存這些地圖以避免它。問題是我該怎麼辦?只是實施可調整的並將這些數據放入捆綁包中?有沒有其他的方法可以解決這個問題呢?感謝您的回覆,並提供任何幫助。使用函數onPause()和onSaveInstanceState()來保存狀態;

回答

4

如果這些都是真正的緩存,只需根據需要從原始來源重新加載數據即可。這就是「緩存」的作用 - 以短時間優化訪問,並使用其他某些內容(例如本地文件)作爲後備存儲。

您可以選擇緩存的使用壽命。目前,它們似乎是單個活動的一部分,這意味着如果該活動被銷燬,緩存將被銷燬。這可能是合適的,也可能不合適。您還可以通過將緩存設置爲某個類的靜態數據成員來使緩存在整個流程生命週期中保持活躍狀態​​。你必須小心謹慎地這樣纔不會引入內存泄漏,導致你用完堆空間。但是,在這種情況下,緩存將會隨着流程一直存在。

但是,最終該過程將被終止(例如,用戶按下HOME並且在相當長的一段時間內不會返回到您的應用程序)。這就是爲什麼您需要能夠根據需要從原始來源重新加載緩存。

相關問題