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

Чтобы сохранить состояние активности в Android-приложении, можно использовать метод onSaveInstanceState. Этот метод позволяет сохранить текущее состояние активности перед её уничтожением, например, при повороте экрана или временном закрытии активности.

Вот как можно сохранить и восстановить состояние активности:

  1. Переопределите метод onSaveInstanceState: В этом методе можно сохранить текущее состояние активности в объект Bundle.

  2. Восстановите состояние в методе 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.

Такой подход гарантирует, что состояние активности сохранится при её системном уничтожении и последующем воссоздании.