Android中公共静态变量的生命周期

时间:2015-09-06 09:26:36

标签: android static-variables activity-lifecycle low-memory

假设我有一个包含两个活动(Activity1和Activity2)的Android应用程序。在Activity1中,我声明了public static Boolean foo = true

当我finish() Activity1并转移到Activity2时,我能够看到“foo”变量的值为true

但是当系统内存不足时(例如因为设备上运行的应用程序很多),那么当我在Activity2上时,我看到“foo”变量的值为null

这是如何解释的?

2 个答案:

答案 0 :(得分:4)

值得注意的是,静态变量的生命周期与过程而不是活动相关联。即使您的活动被销毁,静态变量仍然存在(这就是为什么您将其值设置为 true )。只有当进程被破坏时才能正确释放静态变量。

这也是您不应该使用静态变量来保存对活动,上下文或视图的引用的原因之一。巨大的内存泄漏等待发生。

对于您的特定情况,这意味着:

  • Act1创建&设置变量;您已从Act1移至Act2
  • 这些过程在BG中被杀死
  • 当系统尝试恢复您时,您最终会回到Act2
  • 但是,由于该变量的初始化发生在Act1中,(尚未初始化)变量没有设置。

答案 1 :(得分:0)

如果进程被终止,则所有静态变量将重新初始化为其默认值。

因此,您在Activity1中设置的任何值都不会持续