我有一些变量只能在活动生命周期中初始化一次。
如果我在OnCreate
方法中初始化它们,就像这样:
ArrayList<Integer> numbers = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
初始化过程每次都会发生一些配置更改,如屏幕旋转等,因为他们会一次又一次地调用OnCreate
。
我不打算禁用屏幕旋转等配置更改来修复此问题,但我想知道在初始化时将初始化仅在活动生命周期中发生一次。
答案 0 :(得分:2)
初始化过程每次都会发生一些配置更改,如屏幕旋转等,因为它们会一次又一次地调用OnCreate。
那是因为它是一个新的活动实例。默认情况下,如果您不初始化它们,则任何字段都为null
。
欢迎您使用已保存的实例状态Bundle
,保留的片段或其他技术来保存该数据。
答案 1 :(得分:0)
我认为你可以这样做:
//create a method to run once;
private void initParameters(){
//do your thing here
}
接下来,创建一个在首选项中设置标记的方法
private void updatePreferences(){
//now set a tag that indicates that params have been initialized
....
}
现在,在onCreate
或onResume
内,
//check prefernces
if(!initialized){
//init here your params!
}
我希望这会给你一个想法!