活动之间共享的静态变量的生命周期是什么?

What is the lifecycle of a static variable shared between Activities?

我有一个 BaseActivity 和多个扩展它的 Activities

BaseActivity 有一个静态变量,这使得它在后代 Activities 之间共享(它们都共享同一个实例)。

静态变量仅由 MainActivity(扩展 BaseActivity)初始化。

MainActivity 显式注册一个 BroadcastReceiver

BroadcastReceiver 更改静态变量中的值。

我想确定如果系统终止 MainActivity(例如,对于低内存),静态变量将被重置并设置为 null。

正如我所说,MainActivity 与其他 Activities 共享静态变量,并且它单独拥有 BroadcastReceiver 并且它是初始化静态变量的那个。

如果没有 BroadcastReceiver,静态变量数据将不可靠。

现在你有了整个场景。让我们进入问题:

在这种情况下,共享静态变量的生命周期是多少?

Android(在内存不足的情况下)会破坏单个活动还是会破坏我的整个应用程序(整个活动)?

如果Android可以单独销毁MainActivity并保留静态变量,我怎么能得到通知或注意下一次 MainActivity 启动,以便我可以重新加载静态变量中的值?

抱歉,我不能依赖 MainActivity 中的 onDestroy() 将静态变量设置为 null,如您所知,如果 Android 破坏内存不足的activity.

I want to make sure if the System killed MainActivity (For low memory for example), the static variable will be reset and set to null. What is the lifecycle of the shared static var in this case?

仅当扩展 BaseActivity 的所有其他 Activity 将被终止时,静态变量才会重置为 null(因为它已被设置!= nullMainActivity and/or BroadcastReceiver)。由于您所有的 Activity 都扩展 BaseActivity,变量重置将在整个流程终止时发生。

Does Android (In case of low memory) destroys individual activities or does it destroy my whole app (Whole activities)?

在这种情况下 Android 会破坏整个应用进程。

If Android could destroy MainActivity alone and keep the static var, how could I get notified or be aware of that next time MainActivity starts so I can reload the values inside the static var?

如果适用,请使用 SharedPreferences