Візуалізація життєвого циклу фрагмента в Android додатку

&nbsp

Якщо ви займаєтеся розробкою для Android 30 Honeycomb, API рівня 11 або вище, то у вашому розпорядженні буде АРІ для роботи з фрагментами Якщо ж ви віддаєте перевагу писати програми для більш ранніх версій, ніж Honeycomb, але збираєтеся використовувати в створюваному інтерфейсі обєкти Fragment, то можете застосувати пакет сумісності Android Код прикладів представлений у двох формах: у першому випадку код орієнтований на роботу з API рівня 11, а в другому випадку – придатний для роботи з більш ранніми версіями, аж до API рівня 4, який відповідає версії Android 16 Наступні приклади коду Fragment ідентичні у всьому, крім оголошення пакета для класу Fragment У тому, що стосується життєвого циклу Fragment, код працює аналогічно

Цей код, як і в класі Actіvity, показаному вище, організовує зворотні виклики життєвого циклу таким чином, що їх можна відстежувати по мірі виконання програми:

Як і при роботі з фільтром LogCat, який ми використовували для знаходження записів журналу, що демонструють зворотні виклики до компонентів Activity, тепер ми налаштуємо фільтр для зворотних викликів, що йдуть до Fragment

Якщо повторити кроки, зроблені вище, – запускати інші програми, поки не побачите у вікні LogCat, що началася виклик методів життєвого циклу Fragment, – то виявиться, що кожен екземпляр Fragment, що знаходиться в екземплярі Activity, діє на що розташовуються в ньому види (Views) так само, як і що містить його активність Викликаються схожі перетворення життєвого циклу і станів

Розглянемо кожен метод, що викликається докладніше, враховуючи, що тепер ми знаємо, коли кожен з них викликається

Метод onAttach викликається, коли примірник Fragment асоціюється з примірником Actіvity Це ще не означає повної ініціалізації Actіvity

Метод onCreate викликається, коли створюється або відтворюється примірник Fragment Якщо відбувається відновлення після передував руйнування фрагмента або активності, в якій він утримувався, то аргумент bundle виявиться ненульовим, якщо було збережено небудь стан

Метод onCreateView викликається, коли примірник Fragment повинен створити ієрархію обєктів View, які в ньому містяться Роль фрагмента в активності досить незвичайна У чомусь фрагмент нагадує по поведінці ViewGroup, але він не відноситься до ієрархії класу View Можна сказати, що фрагмент дозволяє екземпляру активності містити кілька наборів видів У нашому прикладі завантажується виключно простий макет, містить єдиний BHflTextView

Метод onActivityCreated викликається, коли активність, яка містить екземпляр фрагмента, вже створена, а також створені обєкти View, що містяться у Fragment На цьому етапі ви можете вільно шукати обєкти View, наприклад, по їх ID

Метод onResume викликається, коли фрагмент стає видимим і працює

Метод onStart викликається, коли фрагмент стає видимим і працює

Метод onPause викликається в тих же умовах, що і метод onPause, що відноситься до активності, коли система збирається відвести фрагмент з переднього плану

Метод onStop викликається, перед тим як фрагмент повинен зупинити роботу

Метод onSavelnstanceState викликається, коли необхідно зберегти стан екземпляра, щоб, якщо цей екземпляр буде знищений (фактично будуть видалені вказують на нього посилання), будь призначене для збереження стан, специфічне для класу, можна було зберегти в обєкті Bundle, переданому цього виклику

Обєкти-фрагменти не є компонентами Фрагмент можна вважати способом розбиття Activity на кілька обєктів, що містяться в Activity Кожен фрагмент має власну ієрархію видів View, і ця ієрархія діє так, як якщо б вона розташовувалася усередині Activity

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*