假设我有一个带有两个活动(Activity1 和 Activity2)的 Android 应用程序。在 Activity1 我声明一个public static Boolean foo = true
.
当我finish()
Activity1 并移动到 Activity2 时,我可以看到“foo”变量具有值true
但是当系统内存不足时(例如,因为设备上运行了许多应用程序),当我在 Activity2 上时,我看到“foo”变量的值是null
.
这是如何解释的?
假设我有一个带有两个活动(Activity1 和 Activity2)的 Android 应用程序。在 Activity1 我声明一个public static Boolean foo = true
.
当我finish()
Activity1 并移动到 Activity2 时,我可以看到“foo”变量具有值true
但是当系统内存不足时(例如,因为设备上运行了许多应用程序),当我在 Activity2 上时,我看到“foo”变量的值是null
.
这是如何解释的?
需要注意的是,静态变量的生命周期与流程相关,而不是与活动相关。即使您的活动被破坏,静态变量仍然存在(这就是您看到它的值设置为true的原因)。只有当进程被销毁时,静态变量才会被正确释放。
这也是您不应该使用静态变量来保存对活动、上下文或视图的引用的原因之一。巨大的内存泄漏等待发生。
对于您的特定情况,这意味着:
如果进程被终止,那么所有静态变量都将重新初始化为其默认值。
因此,您在 Activity1 中设置的任何值都不会持续存在