Активность Android: где инициализировать параметры?
У меня есть некоторые переменные, которые должны быть инициализированы только один раз в течение жизненного цикла. Если я инициализирую их внутри OnCreate
метод, как это:
ArrayList<Integer> numbers = new ArrayList<>();
protected void onCreate(Bundle savedInstanceState) {
numbers.add(1);
numbers.add(2);
numbers.add(3);
}
Процесс инициализации происходит каждый раз, когда происходят некоторые изменения конфигурации, такие как поворот экрана и т. д., так как они вызывают OnCreate
опять и опять.
Я не собираюсь отключать изменения конфигурации, такие как поворот экрана, чтобы исправить это, но я хочу знать, где разместить мою инициализацию, которая происходит только один раз в течение жизненного цикла активности.
2 ответа
Процесс инициализации происходит каждый раз, когда происходят некоторые изменения конфигурации, такие как поворот экрана и т. д., поскольку они будут снова и снова вызывать OnCreate.
Это потому, что это новый экземпляр активности. По умолчанию любые поля будут null
если вы не инициализируете их.
Вы можете использовать сохраненное состояние экземпляра Bundle
сохраненные фрагменты или другие методы хранения этих данных.
Вот что я думаю, вы могли бы сделать:
//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!
}
Я надеюсь, что это дает вам идею!