2013-04-08 70 views
0

我有一個Android應用程序,該應用程序有一個存儲對幾個實體類的引用的類。這個課程運作良好,但有一個問題。如果應用程序在後臺太長,Android類數據會消失

如果我有這個類的數據,然後將應用程序移動到後臺(按主屏幕按鈕),等待足夠長的時間,然後用手機做其他事情,當我將應用程序放到前臺時,數據就消失了。該應用程序將加載到上次打開的屏幕(不重新啓動應用程序),但存儲在該類中的所有數據都消失了。

它並不總是這樣,所以我認爲這是某種內存管理問題,但我試圖找出一種方法來保持這些數據的持久性,或者,如果存在,現在不存在,應用程序將從開始。

我該如何保存這些數據/重建它?

+0

使用Sharedpreferences的http:// saigeethamn。 blogspot.in/2009/10/shared-preferences-android-developer.html – Skynet 2013-04-08 08:13:51

回答

3

審查Activity Lifecycle更好地瞭解如何以及何時你的活動就會被破壞,創造等

您的活動被破壞之前,onSaveInstanceState(Bundle)方法將在它被調用。重寫該方法以將狀態保存到包中。以這種方式保存的數據將在隨後的調用中提供給onCreate(Bundle)

protected void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putString("myKey", "myValue"); // trivial, but for illustration purposes. 
} 
+0

是的,這可能是最好的解決方案(如此接受)。我猜測我的指針由於內存管理而被拋棄。因此,我必須在onSaveInstanceState中將類拆除,並在onCreate中重新構建它(如果存在)。 – shiznatix 2013-04-08 09:45:13

1

U可以將數據保存在Bundle對象中,該對象將作爲參數傳遞給您正在加載的活動的Oncreate。如果您正在存儲的數據很小,那麼您可以使用sharedpreference並在加載活動時將其返回。

我的猜測是喜歡你可能會清除你的活動的onPause方法實體類的對象,所以你可能會失去了數據,只是檢查,一旦..

相關問題