[我读到,当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用作常量的推荐方法吗?谢谢
静态变量与类相关。而且班级很少收集垃圾here's a nice answer。通常,由于可创建的引用问题,因此在android中避免使用静态变量。
这里是保留常量值(例如键,URL等)的替代方法>
在您的应用gradle文件中
buildTypes { debug { buildConfigField "String", "EXTRA_KEY ", "\"key\"" } }
像这样回泄它
BuildConfig.EXTRA_KEY