🌐 QA vs lifestyle Android Apps

💡 Усі статті, обговорення, новини про тестування — в одному місці. Приєднуйтесь до QA спільноти!

Для нас важливо розуміти, коли додаток може «впасти», загубити дані чи поводитися некоректно, тому сьогодні поглянемо на життєвий цикл Android-додатка очима QA.

👀 Два підходи до розробки UI:

XML + Activity/Fragment — класичні додатки.

Jetpack Compose — сучасні декларативні додатки.

🗝 Ключові об’єкти в архітектурі Android-додатка (XML/Compose):

— Application — глобальний об’єкт, живе стільки, скільки процес додатка.

— Activity — екран або контейнер UI, має власний життєвий цикл.

— Fragment / Composable — частини UI, що можуть перевикористовуватися та мають власний lifecycle.

— ViewModel — шар бізнес-логіки, який переживає повороти екрана та збереження стану.

— Service / WorkManager — виконання фонових завдань.

🤖 Трохи пірнаємо в стейти Android-додатка:

📌 Not Running — додаток не запущений, система може його вивантажити.

Перевірка: cold start, splash-екран, ініціалізація SDK.

📌 Foreground (Active) — користувач взаємодіє з додатком.

Перевірка: UI-тести, функціональні сценарії, продуктивність.

📌 Background — Activity не видно, але код виконується (сервіси, push, синхронізація).

Перевірка: push-нотифікації, коректне збереження даних при згортанні.

📌 Destroyed / Killed by system — процес завершений (брак пам’яті, kill з таск-менеджера).

Перевірка: відновлення після kill, робота savedInstanceState, persistence (Room/SharedPrefs).

⚙️ Життєвий цикл Android-додатка (XML + Compose) та рекомендації для тестування

⚠️ XML/Activity + Fragment:

onCreate() → старт, ініціалізація UI та сервісів.

onStart() / onResume() → додаток стає видимим / активним.

onPause() / onStop() → згортання, перехід у background.

onDestroy() → завершення Activity (може не викликатися при kill).

onSaveInstanceState() → збереження стану при поворотах і kill.

⚠️ Jetpack Compose:

@ Composable функції → аналог onCreateView() для UI.

LaunchedEffect / SideEffect → асинхронні дії при старті.

DisposableEffect → очистка ресурсів при зникненні.

rememberSaveable → збереження стану між переворотами та kill.

ViewModel + StateFlow/LiveData → тримають дані при перевантаженні UI.

📣 Мої рекомендації для QA:

— Тестувати cold start: чи всі сервіси та SDK коректно ініціалізуються.

— Перевіряти перехід Foreground ↔ Background (дзвінок, push, згортання).

— Контролювати збереження даних при повороті екрана, зміні теми, kill процесу.

— Ловити креше при відновленні Activity (некоректна робота savedInstanceState).

— Тестувати поведінку UI при перевантаженні Compose/View (особливо List/RecyclerView).

— Перевіряти виконання фонових завдань (WorkManager, push, синхронізація).

— Контролювати binding даних у Compose (State, remember, ViewModel).

‼️ Популярні баги (XML + Compose):

— Краш при поверненні після kill через неправильне використання savedInstanceState.

— Втрата даних після повороту екрана (неправильне збереження у ViewModel).

— Подвійні виклики асинхронних задач у Compose через неправильне використання LaunchedEffect.

— Неправильна робота push-нотифікацій у background/kill режимі.

— UI «заморожується» через важкі обчислення у головному потоці.

Розуміння життєвого циклу Android — додатка — це «БАЗОВИЙ МІНІМУМ😁» для мобайл тестувальника. Якщо ти розумієш, коли додаток переходить у той чи інший стан, можна відловлювати втрати даних, некоректну обробку push-ів та креші при згортанні, а також контролювати коректну роботу UI та фонових процесів.

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному3
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Чат жпт — це добре, але варто його перевіряти. Не завжди правильні речі підказує)

Який сенс в gpt постах?!

Не lifestyle — а Activity lifecycle in Android apps

ну може то у нього стіль жизні а не оті твої терміни вумні)

Підписатись на коментарі