我有一个 BaseActivity 和多个扩展它的 Activities 。
BaseActivity 有一个静态变量,这使它在后代 Activities 之间共享(它们都共享同一个实例)。
静态变量仅由 MainActivity (扩展了 BaseActivity )初始化。
MainActivity 明确注册了 BroadcastReceiver 。
BroadcastReceiver 更改静态变量中的值。
我想确定系统是否杀死了 MainActivity (例如,对于内存不足的情况),静态变量将被重置并设置为null。
正如我所说, MainActivity 与其他 Activities 共享静态变量,并且它仅拥有 BroadcastReceiver ,它是初始化静态变量的一个变量。 var。
没有 BroadcastReceiver ,静态变量数据将不可靠。
现在您已经掌握了整个方案。让我们来探讨以下问题:
在这种情况下,共享静态变量的生命周期是什么?
Android (在内存不足的情况下)会破坏单个活动还是会破坏我的整个应用程序(整个活动)?
如果 Android 可以单独销毁 MainActivity 并保留静态变量,那么下次 MainActivity时我该如何得到通知或知道呢? em>开始,这样我就可以在静态var中重新加载值了吗?
对不起,我不能依靠 MainActivity 中的onDestroy()
将静态var设置为null,因为您知道不能保证在 Android情况下会调用它破坏了内存不足的活动。
答案 0 :(得分:2)
我想确定系统是否杀死了MainActivity(例如对于内存不足的情况),静态变量将被重置并设置为null。在这种情况下,共享静态var的生命周期是什么?
仅当扩展了null
的所有其他活动都被杀死时,静态变量才会重置为BaseActivity
(因为null
已将其设置为!= MainActivity
和/或BroadcastReceiver
)。由于您的所有活动都扩展了BaseActivity
,因此变量重置将在整个过程终止时发生。
Android(在内存不足的情况下)会破坏单个活动还是会破坏我的整个应用程序(整个活动)?
在这种情况下, Android 破坏了整个应用过程。
如果Android可以单独销毁MainActivity并保留静态变量,那么我如何获得通知或知道MainActivity下次启动,以便可以重新加载静态变量中的值?
使用SharedPreferences(如果适用)。