Очищення пам’яті і життєві цикли в Android додатку

&nbsp

Життя активності в Android здається швидкоплинною і повної небезпек Процес активності може бути завершений (killed), а обєкт Activity – знищений (destroyed), здавалося б, за примхою системи Крім того, вам ніхто не гарантує, що всі необхідні перевизначення методів життєвого циклу будуть викликані під час завершення процесу

Для розуміння життєвих циклів в Android доцільно почати з того, що відбувається, коли знищується примірник Activity і коли завершується процес

Знищення активності Активність знищується і викликається метод onDestroy, коли Android хоче скинути даний екземпляр класу Activity «Скинути» в цьому випадку означає, що система Android обнуляє всі посилання, проставлені на екземпляр Activity А це означає, що якщо у вашому коді немає посилання на дану Activity, то Activity в перспективі потрапить в збірку сміття Слово «знищення» в даному випадку не зовсім точне – фактично воно означає повне стирання

Після виклику методу onDestroy ви можете бути впевнені, що даний екземпляр вашого підкласу Activity більше використовуватися не буде Але це ще не означає, що ваш додаток або процес, в якому воно працює, закінчить роботу Насправді може бути інстанціювати і викликаний новий екземпляр того ж підкласу Activity Наприклад, це відбувається безпосередньо практично відразу ж після зміни конфігурації (Зокрема, після зміни орієнтації екрану) У такому випадку обєкт Activity знищується для того, щоб завантаження ресурсів почалася заново, вже для нової конфігурації

Завершення процесу Коли в системі Android починається дефіцит памяті, вона шукає процеси, які можна було б завершити Як правило, додатки Android працюють в окремих процесах Тому збірка сміття, яка відбувається в одному процесі, не має доступу до всієї памяті системи Android Це означає, що в умовах дефіциту памяті Android знаходить процеси, у яких в поточний момент відсутні будь активні компоненти, і завершує (дослівно – «вбиває») їх У крайніх випадках Android завершує і такі процеси, які мають використовувані компоненти У простих додатках процес стає кандидатом на видалення після того, як до нього буде застосований метод onPause Тобто не можна гарантувати, що інші методи життєвого циклу Activity вдасться викликати після виклику onPause, оскільки Android може терміново знадобитися вільна память, а щоб її здобути, доведеться завершити процес

В обох описаних випадках додатком, мабуть, доведеться зберегти небудь стан, яке тимчасово існує в інтерфейсі програми До цього стану відноситься різноманітний користувальницький введення, який система поки не встигла обробити, стан певного Візуальні індикатора, що не входить до складу моделі даних, і т д Ось чому всі компоненти програми, і особливо всі активності, повинні мати можливість перевизначати деякі методи життєвого циклу

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

*

*