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