当Android内存不足时,静态最终变量是否可能为null?

问题描述 投票:0回答:1

[我读到,当Android内存不足时,它将杀死后台的活动。

[返回到应用程序时,Android将从最顶层的堆栈还原,因此,当Activity调用其他具有'静态'状态的被杀死的Activity时,由于尚未恢复,它可能会返回null。

问题是,静态最终变量如何?我的理解是,既然它是最终的,即使Android杀死了持有它的Activity,它也不会被Android保留并保持其价值。

用例是fyi:

活动A:

private static final String EXTRA_KEY = "key"

void goToB(){
    Intent intent = new Intent(this, B.class);
    intent.putExtra(EXTRA_KEY,"value");
}

活动B:

void getExtra(){
   getIntent.getExtras(A.EXTRA_KEY);
}

如果我正在进行活动B,则将应用置于后台,而Android由于内存而终止活动,A.EXTRA_KEY是否有可能为null?

这也是将EXTRA_KEY用作常量的推荐方法吗?谢谢

java android memory static final
1个回答
0
投票

静态变量与类相关。而且班级很少收集垃圾here's a nice answer。通常,由于可创建的引用问题,因此在android中避免使用静态变量。

这里是保留常量值(例如键,URL等)的替代方法>

在您的应用gradle文件中

buildTypes {
    debug {
        buildConfigField "String", "EXTRA_KEY ", "\"key\""
    }
}

像这样回泄它

BuildConfig.EXTRA_KEY 
© www.soinside.com 2019 - 2024. All rights reserved.