Sobes.tech
Back to questions
Junior — Middle
65

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

Companies where asked
EDJE

Answer from AI

sobes.tech AI

При изменении ориентации или конфигурации устройства в Android активность по умолчанию пересоздаётся, что приводит к потере состояния пользовательского интерфейса. Для сохранения UI существуют следующие методы:

  1. onSaveInstanceState(Bundle outState) и onRestoreInstanceState(Bundle savedInstanceState) — позволяют сохранить и восстановить состояние UI, например, содержимое полей ввода.

  2. ViewModel — хранит данные, связанные с UI, и переживает изменения конфигурации, позволяя не терять состояние.

  3. Retain Fragment — фрагмент с setRetainInstance(true) сохраняется при пересоздании активности.

  4. Использование ресурсов с разметкой для разных конфигураций — например, разные layout-файлы для портретной и ландшафтной ориентации.

  5. Обработка конфигурационных изменений вручную через android:configChanges в манифесте, чтобы предотвратить пересоздание активности (не рекомендуется для сложных UI).

Пример сохранения состояния поля ввода:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString("input_text", editText.getText().toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    String text = savedInstanceState.getString("input_text");
    editText.setText(text);
}