При смене позиций (повороте экрана или других изменениях конфигурации) на 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.