Как сохранить состояние Activity в Android?

Чтобы сохранить состояние активности в Android-приложении, можно использовать метод onSaveInstanceState
. Этот метод позволяет сохранить текущее состояние активности перед её уничтожением, например, при повороте экрана или временном закрытии активности.
Вот как можно сохранить и восстановить состояние активности:
-
Переопределите метод
onSaveInstanceState
: В этом методе можно сохранить текущее состояние активности в объектBundle
. -
Восстановите состояние в методе
onCreate
илиonRestoreInstanceState
: Когда активность создаётся заново, можно восстановить состояние из объектаBundle
.
Пример кода:
public class MainActivity extends AppCompatActivity {
private static final String KEY_COUNTER = "counter";
private int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Восстанавливаем состояние
if (savedInstanceState != null) {
counter = savedInstanceState.getInt(KEY_COUNTER, 0);
}
// Ваши действия с UI...
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
// Сохраняем текущее состояние в Bundle
outState.putInt(KEY_COUNTER, counter);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
// Восстанавливаем состояние, если оно доступно
if (savedInstanceState != null) {
counter = savedInstanceState.getInt(KEY_COUNTER);
}
}
}
Основные моменты:
- Метод
onSaveInstanceState
вызывается перед тем, как система может уничтожить активность, например, при изменении конфигурации. - Состояние можно восстановить в методах
onCreate
илиonRestoreInstanceState
. - Для хранения и извлечения данных используется объект
Bundle
, который поддерживает примитивные типы данных и объекты, реализующие интерфейсParcelable
.
Такой подход гарантирует, что состояние активности сохранится при её системном уничтожении и последующем воссоздании.