为了在我的 android 应用程序中保持状态,以便用户返回到他们停止的活动,我在清单中设置了非常有用的标志 alwaysRetainTaskState:
<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() 来帮助维护活动状态。
为了解决我的问题,假设我有一个带有许多全局变量的 Activity,其中一些是静态的,而另一些则不是。它们由布尔值、数组列表、字符串等组成。我的问题是,当活动被销毁时,我很困惑这些变量中的哪些是持久的。我应该在 onSaveInstanceState() 中将哪些打包到包中?当一个活动被销毁时,系统是否对这些变量做任何事情?