Middle
52
questionbank

Какова специфика смены позиций на платформе Android?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

При смене позиций (повороте экрана или других изменениях конфигурации) на Android происходит уничтожение текущей Activity и создание новой.

Что происходит:

  • Вызываются жизненные циклы старой Activity: onPause(), onStop(), onDestroy().
  • Старая Activity удаляется из памяти.
  • Создается новая Activity.
  • Вызываются жизненные циклы новой Activity: onCreate(), onStart(), onResume().

Специфика для QA:

  • Потеря данных: Несохраненные данные в полях ввода, выбранные элементы списка и т.д. могут быть утеряны, если не реализована их сохранность.
  • Состояние UI: Видимость элементов, скролл позиции, выбранные вкладки и другое состояние UI может сбрасываться до дефолтного.
  • Фоновые операции: Запущенные фоновые задачи (например, загрузка данных) могут прерваться или некорректно завершиться.
  • Производительность: Многократные смены конфигурации могут привести к замедлению работы приложения из-за постоянного пересоздания Activity.
  • Утечки памяти: Неправильная работа с ресурсами (например, Listener'ы, не отписанные в onDestroy()) может привести к утечкам памяти.

Как обрабатывается разработчиками (и что нужно проверять QA в первую очередь):

  • Сохранение состояния: Использование onSaveInstanceState(), onRestoreInstanceState(), ViewModel, Android Architecture Components (AAC).
    java
    java
  • Обработка Configuration Changes: Объявление android:configChanges в AndroidManifest.xml для тех случаев, когда пересоздание Activity не требуется (менее распространенный сценарий для обработки смены ориентации, но используется для других изменений конфигурации).
  • Жизненный цикл ViewModel: ViewModel сохраняет свое состояние при смене конфигурации и не уничтожается вместе с Activity.
  • Фрагменты: Правильное управление жизненным циклом Фрагментов.

Тестирование специфики смены позиций:

  • Симуляция поворотов экрана на разных устройствах и эмуляторах.
  • Тестирование сохранения и восстановления данных после смены позиции.
  • Проверка состояния UI (видимость, текст, скролл, выбранные элементы).
  • Тестирование прерывания/продолжения фоновых задач.
  • Проверка на утечки памяти (использование Android Profiler).
  • Стресс-тестирование: многократные быстрые смены позиции.

Инструменты для QA:

  • Android Studio (для отладки, просмотра логов, использования Profiler).
  • adb команды для симуляции поворотов.
  • Различные эмуляторы и реальные устройства с разными разрешениями и версиями Android.