ЗАПУСК ACTIVITY | ЗАНЯТТЯ 11На відміну від інших парадигм програмування, в якому додатки запускаються за допомогою методу main(), Android-система ініціює код в екземплярі Activity, викликаючи специфічні методи зворотного виклику, які відповідають конкретним етапах його життєвого циклу. Існує послідовність методів зворотного виклику, які запускають activity, і послідовність методів зворотного виклику, які зупиняють Activity. ПОНЯТТЯ ЗВОРОТНИХ ВИКЛИКІВ ЖИТТЄВОГО ЦИКЛУПротягом життя одного з видів activity, система викликає основний набір методів життєвого циклу в послідовності, аналогічній ступінчастій піраміді. Тобто, кожен етап життєвого циклу activity є окремим кроком на піраміді. Коли система створює новий екземпляр activity, кожен метод зворотного виклику переміщує стан activity на один крок до вершини. Верхня частина піраміди є точкою, в якій activity виконується на передньому плані, і користувач може взаємодіяти з нею.
Спрощена ілюстрація життєвого циклу activity, виражена у вигляді ступінчастою піраміди. Малюнок показує, як кожний зворотній виклик, використаний, щоб зробити крок activity до заключного стану на вершині, де метод зворотного виклику заставляє activity зробити крок вниз. Activity може також повернутися до відновленого стані з станів Paused і Stopped. • Не збоїть, якщо користувач отримує телефонний дзвінок або перемикається на інший додаток під час користування вашим додатком. Ви дізнаєтеся в наступних уроках, що є кілька ситуацій, в яких activity переходить між різними станами, які зображені на малюнку вище. Однак, тільки три з цих станів можуть бути статичними. Тобто, activity може існувати тільки в одному з трьох станів протягом тривалого періоду часу: Resumed (Поновлення) У цьому стані activity знаходиться на передньому плані і користувач може взаємодіяти з нею. (Також іноді називають «запущеним» станом). Paused (Призупинено) У цьому стані activity частково закрита деякою роботою іншої activity, на передньому плані вона напівпрозора або не покриває весь екран. Призупинена activity не приймає введення користувача і не може виконати який-небудь код. Stopped (Зупинено) У цьому стані activity повністю прихована і не видна користувачеві; це ще називають фоновим режимом. Під час зупинки екземпляр activity і всі його дані про стан, такі як змінні членів зберігаються, але вона не може виконати який-небудь код. Інші стани (Created і Started) минущі і система швидко переходить від них до наступного стану, викликавши наступний метод зворотного виклику життєвого циклу. Тобто, після того, як система викликає onCreate(), вона швидко викликає onStart(), яка потім швидко переходить до onResume(). ВКАЗУВАННЯ В СВОЇХ ДОДАТКАХ ACTIVITY, ЯКА ЗАПУСКАЄТЬСЯКоли користувач вибирає значок додатку на головному екрані, то система викликає метод onCreate() для Activity у вашому додатку, яку ви оголосили "пусковою" (або "головною") activity. Це activity, яка служить основною точкою входу в інтерфейс користувача додатку. Примітка: При створенні нового проекту Android з інструментами Android SDK, файли проекту за замовчуванням включають в себе клас Activity, який оголошений в маніфесті з цим фільтром. Якщо яка-небудь дія MAIN або категорія LAUNCHER не оголошені для однієї з ваших activity, то значок вашого додатку не з'явиться в списку додатків на головному (Home) екрані. СТВОРЕННЯ НОВОГО ЕКЗЕМПЛЯРУБільшість додатків включають в себе кілька різних видів activity, які дозволяють користувачеві виконувати різні дії. Коли activity є основною activity, то створюється, коли користувач натискає значок додатку або іншої activity, яку запускає ваш додаток у відповідь на дії користувача. Система створює кожен новий екземпляр Activity шляхом виклику методу onCreate(). Увага: Використовуйте SDK_INT, щоб запобігти виконанню більш старими системами нових API, які працюють так тільки на Android 2.0 (API рівня 5 і вище). Після завершує виконання onCreate(), система викликає методи onStart() і onResume() у швидкій послідовності. Ваша activity ніколи не перебуває в станах Created або Started. Технічно, activity стає видимою для користувача, коли викликано onStart(), але негайно слідує onResume() і activity залишається у стані Resumed поки щось не відбувається, щоб змінити його, наприклад, при отриманні телефонного дзвінка користувач переходить до іншої activity, або екран пристрою гасне. Примітка: Метод onCreate() включає в себе параметр, що називається savedInstanceState, який обговорюється в останньому уроці про відтворення activity.
Ілюстрація структури життєвого циклу activity з акцентом на трьох основних зворотних викликах. Ці виклики система робить послідовно при створенні нового екземпляра activity: onCreate(), onStart() і onResume(). Після того, як ця послідовність зворотних викликів завершується, activity досягає стану Resumed, в якому користувачі можуть взаємодіяти з activity, поки вони не переключитися на іншу activity. ЗНИЩЕННЯ ACTIVITYУ той час, як перший зворотній виклик життєвого циклу activity є onCreate(), її самий останнім зворотнім викликом є onDestroy(). Система викликає цей метод на вашій activity як кінцевий сигнал про те, що екземпляр activity буде повністю видалений з пам'яті системи. Примітка: Система викликає onDestroy() після того, як вже викликані onPause() і onStop() у всіх ситуаціях, крім однієї: коли ви телефонуєте finish() зсередини методу onCreate(). У деяких випадках, наприклад, коли ваша activity функціонує як тимчасове рішення розробника, щоб запустити іншу activity, ви можете викликати finish() з onCreate(), щоб знищити activity. У цьому випадку система негайно викликає onDestroy() без виклику будь-яких інших методів життєвого циклу. |