Зупинка і перезапуск activity

Правильна зупинка і перезапуск вашої activity є важливим процесом життєвого циклу activity. який дає користувачам почуття, що ваше додаток завжди живе і не втрачає їх прогрес. Є кілька ключових сценаріїв, в яких ваша activity зупиняється і перезапускається:

Activity клас надає два методи життєвого циклу, onStop () і onRestart (). які дозволяють спеціально обробляти то, як ваша activity буде зупинятися і перезапускати. На відміну від призупиненого, яке означає часткове перекриття елементів призначеного для користувача інтерфейсу, стан зупинки vгарантірует, що призначений для користувача інтерфейс більше не видно і фокус користувача знаходиться в іншій activity (або зовсім іншому додатку).

Примітка: Оскільки система утримує ваш Activity екземпляр в системній пам'яті, коли він зупинений, цілком можливо, що вам не потрібно реалізовувати onStop () і onRestart () (або навіть onStart () методи взагалі. Для більшості activity. Які відносно прості, activity буде зупинена і перезапущено цілком нормально, і ви, можливо, повинні використовувати тільки onPause () для припинення поточних дій і від'єднання від системних ресурсів.

Зупинка і перезапуск activity

Малюнок 1. Коли користувач залишає вашу activity. система викликає onStop () для припинення activity (1). Якщо користувач повертається по час зупинки activity. система викликає onRestart () (2), а потім швидко onStart () (3) і onResume () (4). Зверніть увагу, що незалежно від того, який сценарій викликає зупинку activity. система завжди викликає onPause () перед викликом onStop ().

Зупинка вашої activity

Коли ваша activity отримує виклик onStop () методу, вже нічого не видно і ви повинні звільнити майже всі ресурси, які не потрібні, поки користувач їх не використовує. Після того, як ваша activity припиняється, система може знищити екземпляр, якщо це необхідно для відновлення системної пам'яті. У крайніх випадках, система може просто вбити ваш процес додатки без виклику фінального onDestroy () методу зворотного виклику, тому дуже важливо використовувати onStop () для звільнення ресурсів, які могли б привести до витоку пам'яті.

Незважаючи на те, що onPause () метод викликається до onStop (). ви повинні використовувати onStop () для виконання більших і ресурсномістких операцій завершення, таких як запис інформації в базу даних.

Наприклад, ось реалізація onStop (). який зберігає вміст чернетки записки в постійне сховище:

Примітка: Навіть якщо система руйнує вашу activity. коли вона зупинена, вона все ще зберігає стан View об'єктів (наприклад, тексту в EditText) в Bundle (в БЛОБ з парами ключ-значення), і відновлює їх, якщо користувач переходить назад в той же екземпляр activity (cледует урок розповідає більше про використання Bundle для збереження інших даних стану в разі, якщо ваша activity знищена і створена заново).

Запуск / перезапуск вашої activity

Коли ваша activity повертається на перший план з зупиненого стану, вона отримує виклик onRestart (). Система також викликає onStart () метод, який відбувається кожного разу, коли ваша activity стає видимою користувачу (будь то перезапуск або об'єкт створений вперше). onRestart () метод, однак, викликається тільки коли activity поновлюється з зупиненого стану, так що ви можете використовувати його для виконання спеціальних реставраційних робіт, які можуть бути необхідні, тільки якщо activity була раніше зупинена, але не знищена.

Це рідкість, коли програма має використовувати onRestart () для відновлення стану activity. так що немає ніяких керівних принципів для цього методу, які застосовувалися б для більшості додатків. Проте, тому що ваш onStop () метод повинен був істотно очистити всі ресурси вашої activity. ви повинні будете повторно створити їх, коли vбудет перезавантажуватися. Тим не менш, ви також повинні створити екземпляри ресурсів, коли ваша діяльність створюється вперше (коли немає існуючого примірника діяльності). З цієї причини, ви повинні, як правило, використовувати onStart () метод зворотного виклику як доповнення до onStop () метод, тому що система викликає onStart () як при створенні вашої activity. так і при перезапуску activity з зупиненого стану.

Наприклад, тому що користувач, можливо, був далеко від вашого застосування протягом тривалого часу, перш ніж повернутися до нього, onStart () метод є хорошим місцем, щоб переконатися, що необхідні функції системи включені:

Схожі статті