ЖИТТЄВІ ЦИКЛИ КОМПОНЕНТІВ – ANDROID ДОДАТКИ

&nbsp

Вище ми вже згадували про життєві цикли компонентів Наприклад, onCreate запускає додаток Життєві цикли компонентів призначені для двох цілей: забезпечують ефективне використання памяті, виділеної кожному додатку, або простору динамічної памяті Крім того, вони дозволяють зберігати стан цілих процесів і відновлювати процеси в цьому стані Тому система Android може одночасно задіяти більшу кількість додатків, ніж уміщається в її памяті

Життєвий цикл активності З усіх компонентів найскладнішим життєвим циклом володіє активність Тут цей цикл зображений схематично, далі ми розглянемо, як зазначені переходи між станами здійснюються в коді На рис 35 показані стану і переходи між ними, що відбуваються протягом життєвого циклу активності При обробці життєвого циклу найважливіше вибрати, які зворотні виклики необхідно реалізувати, і знати, коли ці зворотні виклики повинні виконуватися

Рис 35 Стани життєвого циклу активності

Ця тема буде розглянута докладно Поки зупинимося на двох методах класу Actіvity Середа часу виконання викликає перший метод, щоб попередити додаток про необхідність зберегти поточний стан Другий метод викликається для того, щоб новий екземпляр Activity міг відновити додаток в тому стані, в якому воно було збережено Наступні фрагменти коду з реалізаціями методів взяті, де наведено повний лістинг програми, в тому числі змінні членів (member variables), до яких відноситься код:

Середа часу виконання викликає метод onSavelnstanceState після того, як визначить, що активність, ймовірно, доведеться знищити, але бажано мати можливість відновити її пізніше Це важлива відмінність від інших методів, повязаних з життєвим циклом, які викликаються при зміні стану Якщо, наприклад, відбувається явне завершення активності, немає необхідності відновлювати її стан, навіть притому, що активність на шляху до завершення пройде через стан призупинення (paused) і буде викликаний її метод onPause Як показано в попередньому фрагменті коду, робота, яку необхідно виконати в методі onSavelnstanceState, полягає в збереженні будь-якого стану, яке дозволить користувачеві відновити роботу з додатком пізніше Можливо, користувач навіть не усвідомлює, що активність з часу останнього її використання могла бути дезінтегрірована і тільки потім відновлена

Метод onRestorelnstanceState викликається, коли відновлюється активність, яка раніше була дезінтегрірована З цього моменту працює новий екземпляр Activity вашої програми Дані, які ви зберегли в минулому екземплярі цієї активності за допомогою onSavelnstanceState, передаються новій активності методом onRestorelnstanceState

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

У масі прикладів коду на Android, зокрема в невеликих прикладах, реалізується дуже мало зворотних викликів, повязаних з життєвим циклом Це пояснюється тим, що батьківський клас Actіvity обробляє зворотні виклики життєвого циклу, клас View і дочірні класи класу View, а також зберігає і їх стану (рис 36) Тому в дуже багатьох випадках класи View в Android забезпечують весь функціонал, необхідний для роботи користувача інтерфейсу, і додаткам Android не доводиться явно обробляти більшість зворотних викликів, повязаних з життєвим циклом

В принципі, цей механізм хороший, оскільки з ним програмувати для Android набагато зручніше Все, що показано на рис 36, не вимагає написання ніякого спеціального коду Але тут є і негативна сторона: програміст може настільки звикнути ігнорувати життєвий цикл активності, що його код зрештою перетвориться на плутанину, що кишить помилками Ось чому ми окремо наголошуємо, як важливо розуміти життєві цикли і чому буде розказано, як обробляти всі зворотні виклики, повязані з життєвим циклом, а також реєструвати їх Починати роботу, повністю розуміючи життєвий цикл активності, – це, мабуть, найважливіша передумова, яка допоможе уникнути складно діагностуються помилок

Рис ЗБ Збереження стану користувача інтерфейсу

Джерело: 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>

*

*