爲了在我的android應用中保持狀態,以便用戶將返回到他們停止的活動,我在我的清單中設置了非常有用的標誌alwaysRetainTaskState:當系統殺死活動時帶有全局變量的Android持久狀態
<activity android:name=".Main"
android:label="@string/app_name"
android:alwaysRetainTaskState="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
這樣做可以完成工作,或者我想;我發現系統仍然可以銷燬應用程序的活動以保留內存,同時保持狀態。爲了驗證這一點,我寫了一個小測試應用程序,在循環中創建了一大堆活動,以查看我的應用程序的活動是否會被破壞。系統肯定會破壞我的活動。
隨着一些閱讀,我發現我需要使用onSaveInstanceState()和onRestoreInstanceState()來幫助維護活動狀態。
爲了解決我的問題,我們假設我有一個包含多個全局變量的活動,其中一些是靜態的,另一些則不是。它們由布爾值,數組列表,字符串等組成。我的問題是,我很困惑哪些變量在活動被破壞時是持久的。哪些應該打包到onSaveInstanceState()中的包中?當一項活動被破壞時,系統是否會對這些變量做任何事情?
是的我不清楚我想要打包到包中。我的意思是說:是否需要保存靜態變量?做非靜態?從你所說的,當調用saveInstanceState()時,靜態成員將不需要保存。當一個活動被銷燬時,非靜態變量是否會持續存在? – jlim 2010-01-22 16:32:07
對不起 - 我還試圖確定什麼是確保在我的應用程序中執行的一些用戶操作的最佳方式,即向主視圖添加動態視圖(實際的appWidgets)將被記住,而不管它是什麼。我不清楚它是否像保存的實例狀態那麼簡單,或者如果我需要一些其他類型的魔法來保留它們的選擇並以某種方式重建它們 – mylock 2010-02-18 07:09:12