2016-07-31 52 views
0

我有一些变量只能在活动生命周期中进行一次初始化。 如果我初始化它们里面OnCreate方法,像这样:Android活动:在哪里初始化参数?

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

初始化过程中发生的每其中有像屏幕旋转和等一些配置更改的时间,因为他们会一次次给OnCreate

我不打算禁用像屏幕旋转这样的配置更改来解决这个问题,但我想知道在哪里放置我的初始化,哪些初始化在活动生命周期中只发生一次。

+0

为什么不能有只运行一次的方法?将标签存储在您的偏好中? – Eenvincible

回答

2

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

这是因为它是一个新的活动实例。默认情况下,如果你没有初始化它们,任何字段将是null

欢迎您使用保存的实例状态Bundle,保留片段或其他技术来保存该数据。

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! 
} 

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