2011-10-22 81 views
0

我的android遊戲在數組列表中保存關卡布局數據。在測試我的級別加載器時,我注意到有時候我的級別沒有加載,只剩下一個黑屏。起初我以爲它可能是我的紋理不重新加載,但我通過繪製一個獨立於ArrayList的對象來證明這是錯誤的,它畫得很好。接下來我使用Log標籤來檢查我的ArrayList的大小。只要我按下家中,然後重新打開我的應用程序,Log標籤開始返回零大小,這意味着我的所有數據都已丟失。現在我真的不想在每次調用onPause時從文件中加載我的級別數據,那麼是否有辦法保留ArrayList中保存的數據?ArrayList在暫停時不保存

回答

1

問題是你可能正在收集垃圾(即你暫停正在因爲內存問題而變成銷燬)。在您的活動中實施onSaveIntstanceStateonRestoreInstanceState方法以查看是否解決了問題。

Num1在評論中提出了一個很好的觀點,我覺得值得指出。請注意,bundle應該包含少量的數據。如果你的ArrayList很大,這可能就是你的活動在同一個地方被垃圾收集的原因。如果是這樣的話,你有兩種選擇之一。將數據明確地存儲在onDestroy方法的磁盤上(這種方式只在需要時執行,寫入磁盤可能需要一段時間),或者在活動重新聚焦時重新計算這些內容。這只是一件好事情要考慮的事情。

+0

任何特別的東西我必須做的,以便從捆綁中取回或在應用程序恢復時它會在那裏 – Jack

+0

查看我的更新回答 –

+0

我在猜測捆綁包本身會在某個時候遭到破壞,但我是對的認爲如果發生這種情況,onCreate會再次被調用? – Jack