【发布时间】:2019-04-09 22:38:18
【问题描述】:
我有一个 BaseActivity 和多个扩展它的 Activity。
BaseActivity 有一个静态变量,这使得它在后代 Activity 之间共享(它们都共享同一个实例)。
静态变量仅由 MainActivity(扩展 BaseActivity)初始化。
MainActivity 显式注册了一个 BroadcastReceiver。
BroadcastReceiver 改变静态变量中的值。
我想确定如果系统杀死了MainActivity(例如内存不足),静态变量将被重置并设置为null。
正如我所说,MainActivity 与其他 Activity 共享静态变量,并且它完全拥有 BroadcastReceiver 并且它是初始化静态变量的人变量。
没有BroadcastReceiver,静态变量数据将不可靠。
现在你有了整个场景。让我们进入问题:
在这种情况下,共享静态变量的生命周期是多少?
Android(在内存不足的情况下)会破坏单个 Activity 还是会破坏我的整个应用(整个 Activity)?
- 如果它完全破坏我的应用程序并重置可接受的静态变量,我担心它会单独破坏 MainActivity 并取消注册 BroadcastReceiver,但它会保留static var(这将变得不可靠)。
如果 Android 可以单独销毁 MainActivity 并保留静态 var,我如何才能在下次 MainActivity em> 启动,以便我可以重新加载静态变量中的值?
抱歉,我不能依靠 MainActivity 中的 onDestroy() 将静态 var 设置为 null,因为您知道在 Android 的情况下不能保证调用它破坏了低内存中的活动。
【问题讨论】:
标签: java android android-lifecycle activity-lifecycle static-variables