Sobes.tech
Back to questions
Junior — Middle
65

Каким образом обеспечивать сохранение текущего состояния системы при изменении конфигурации?

Companies where asked
ПСБ

Answer from AI

sobes.tech AI

В Android для сохранения текущего состояния системы при изменении конфигурации (например, поворот экрана) используется механизм сохранения состояния Activity или Fragment.

Основные способы:

  1. onSaveInstanceState(Bundle outState) — метод, в котором можно сохранить необходимые данные в объект Bundle. Эти данные будут доступны при пересоздании Activity в методе onCreate или onRestoreInstanceState.

  2. ViewModel — компонент из архитектурных компонентов Android, который сохраняет данные при изменении конфигурации и не пересоздаётся вместе с Activity.

  3. Сохранение состояния UI-компонентов — многие стандартные виджеты сами сохраняют своё состояние, если у них установлен уникальный идентификатор.

Пример сохранения состояния счётчика:

class MainActivity : AppCompatActivity() {
    private var counter = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        counter = savedInstanceState?.getInt("counter_key") ?: 0
        // обновить UI с текущим значением counter
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putInt("counter_key", counter)
    }
}

Таким образом, при изменении конфигурации данные не потеряются, и пользователь увидит тот же интерфейс и состояние.