2016-07-31 54 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! 
} 

我希望這能給你一個想法!