2011-07-18 56 views
0

當我將應用程序置於後臺並且再次喚醒時,意味着所有全局變量都被清除。這不會總是發生,但僅在極少情況下發生。我想這可能只是內存崩潰。爲什麼全局值被清除?如何從這恢復?Android中的內存問題

+0

您是如何實現全局變量的?你正在使用單例類,擴展的應用程序類還是其他方式? – Trevor

+0

我已擴展應用程序.... – Kakey

+0

使全局變量靜態可能會解決問題。 – Hein

回答

0

這可能是Android的工作方式。僅僅因爲你關閉了應用程序中的最後一個活動並不意味着你的應用程序已從內存中清除。如果Android不需要應用程序佔用的內存空間,它不一定會被Android立即殺死。此外,垃圾收集器擁有自己的生命週期,並不一定會在每次活動銷燬時觸發。

你可以試試這個:啓動憤怒的小鳥並開始玩耍,消滅一些「瘋狂的小雞」。按下正在進行的遊戲中的主頁按鈕,然後再次直接啓動憤怒的小鳥。注意你最終會達到你剛剛「回家」的水平。再次按主頁按鈕並啓動另一個應用程序(瀏覽器通常是內存飢餓)。過了一段時間後,再次啓動「憤怒的小鳥」,並注意你將不得不再次完成整個啓動過程(即,你不一定會在遊戲中途停留在原先的水平)。

如果確實需要維護應用程序狀態,無論GC是運行還是不運行,都應該使用SharedPreferences或SQLite數據庫。您可以在這裏閱讀更多關於這些概念的信息:http://developer.android.com/guide/topics/data/data-storage.html