Android Activity:在哪里初始化参数?

时间:2016-07-31 13:04:25

标签: android constructor initialization activity-lifecycle

我有一些变量只能在活动生命周期中初始化一次。 如果我在OnCreate方法中初始化它们,就像这样:

ArrayList<Integer> numbers = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
    numbers.add(1);
    numbers.add(2);
    numbers.add(3);
}

初始化过程每次都会发生一些配置更改,如屏幕旋转等,因为他们会一次又一次地调用OnCreate

我不打算禁用屏幕旋转等配置更改来修复此问题,但我想知道在初始化时将初始化仅在活动生命周期中发生一次。

2 个答案:

答案 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

  ....
}

现在,在onCreateonResume内,

//check prefernces
if(!initialized){
   //init here your params!
}

我希望这会给你一个想法!