gpt4 book ai didi

java - 系统终止 Activity 时具有全局变量的Android持久状态

转载 作者:搜寻专家 更新时间:2023-11-01 07:41:17 28 4
gpt4 key购买 nike

为了在我的 Android 应用程序中保持状态,以便用户返回到他们离开的 Activity ,我在我的 list 中设置了非常有用的标志 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>

这样就完成了工作,或者我是这么认为的;我发现系统仍然可以破坏我的应用程序的 Activity 以保留内存,同时仍保持状态。为了验证这一点,我编写了一个小测试应用程序,它在一个循环中创建了一大堆 Activity ,以查看我的应用程序的 Activity 是否会被销毁。果然,系统破坏了我的 Activity 。

通过一些阅读,我发现我需要使用 onSaveInstanceState() 和 onRestoreInstanceState() 来帮助维持 Activity 状态。

为了回答我的问题,假设我有一个包含多个全局变量的 Activity ,其中一些是静态的,一些不是。它们由 boolean 值、数组列表、字符串等组成。我的问题是,当 Activity 被销毁时,我很困惑这些变量中的哪些变量是持久的。我应该将哪些打包到 onSaveInstanceState() 中的 bundle 中?当 Activity 被销毁时,系统是否会对这些变量做任何事情?

最佳答案

let's say I have an Activity with a number of global variables, some of them are static and some aren't.

Java 中没有“全局变量”这样的东西。此外,应尽可能避免使用非最终(即可变)静态数据成员。

Which ones should I package into the bundle in onSaveInstanceState()?

这不可能抽象地回答。

Does the system do anything to these variables when an activity is destroyed?

可能吧。只要进程存在,静态数据成员就存在。当你的最后一个 Activity 被销毁时,你的进程将在不久的将来终止,那些静态数据成员将被消除。在您的应用程序的下一次运行中,这些静态数据成员将被重新初始化。

关于java - 系统终止 Activity 时具有全局变量的Android持久状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2114312/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com