Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 活动之间共享的静态变量的生命周期是什么?_Java_Android_Android Lifecycle_Activity Lifecycle_Static Variables - Fatal编程技术网

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

Java 活动之间共享的静态变量的生命周期是什么?,java,android,android-lifecycle,activity-lifecycle,static-variables,Java,Android,Android Lifecycle,Activity Lifecycle,Static Variables,我有一个BaseActivity和多个扩展它的活动 BaseActivity有一个静态变量,使其在子活动之间共享(它们都共享同一个实例) 静态变量仅由MainActivity(扩展BaseActivity)初始化 MainActivity显式注册BroadcastReceiver BroadcastReceiver更改静态变量中的值 我想确定系统是否终止了MainActivity(例如,对于内存不足),静态变量将被重置并设置为null。 正如我所说,MainActivity与其他活动共享静态va

我有一个BaseActivity和多个扩展它的活动

BaseActivity有一个静态变量,使其在子活动之间共享(它们都共享同一个实例)

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

MainActivity显式注册BroadcastReceiver

BroadcastReceiver更改静态变量中的值

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

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

如果没有广播接收器,静态变量数据将不可靠。

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

在这种情况下,共享静态var的生命周期是什么?

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

  • 如果它完全破坏了我的应用程序并重置了可以接受的静态变量,我担心它会单独破坏MainActivity并注销BroadcastReceiver,但它保留了静态变量(这将变得不可靠)
如果Android可以单独销毁MainActivity并保留静态变量,那么下次MainActivity启动时,我如何得到通知或意识到这一点,以便重新加载静态变量中的值?

抱歉,我不能依靠MainActivity中的
onDestroy()
将静态变量设置为null,因为您知道,如果Android在内存不足的情况下破坏了活动,则不能保证调用静态变量

我想确保如果系统终止了MainActivity(例如内存不足),静态变量将被重置并设置为null。在这种情况下,共享静态var的生命周期是什么

只有当扩展
BaseActivity
的所有其他活动都将被终止时,静态变量才会重置为
null
(因为它已经被
MainActivity
和/或
BroadcastReceiver
设置了!=
null
)。由于您的所有活动都扩展了
BaseActivity
,因此变量重置将在整个流程终止时发生

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

在这种情况下,Android会破坏整个应用程序流程

如果Android可以单独销毁MainActivity并保留静态变量,那么下次MainActivity启动时,我如何得到通知或意识到这一点,以便重新加载静态变量中的值

如果适用,请使用