Опис поведінки при запуску і поведінки задачі в Android додатку

&nbsp

У API Android немає спеціального класу, який представляв би собою завдання, і обєкти-завдання не вдасться контролювати за допомогою викликів тих чи інших методів Поведінка завдання регламентується параметрами, вказуються у файлі опису програми Крім того, на поведінку завдання можна вплинути, створюючи і використовуючи наміри Розповідаючи про те, як контролюється поведінка завдання, ми покажемо, як тісно переплетені життєвий цикл активності і поведінку завдання

Режим запуску

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

У атрибута android: launchMode може бути одне з чотирьох значень Всі вони є взаємовиключними

“Standard – Задається за замовчуванням Якщо атрибут android: launchMode має таке значення, активність може запускатися багаторазово Одночасно може існувати кілька екземплярів даного класу Activity Ці екземпляри можуть відноситися до декількох завданням, але як правило – до тієї завданню, яка викликала startActіvіty () для запуску активності Малюнок 118 демонструє кілька примірників активності на верхньому рівні завдання

Рис 118 Стандартний режим запуску, при якому створюється нова активність

“SingleTop – Відрізняється від режиму standard. Якщо вже існує екземпляр активності з таким значенням атрибута android: TaunchMode і ця активність входить до складу задачі, до якої буде ставитися і нова активність, розташовуючись при цьому на верхньому рівні цього завдання, то саме існуюча активність отримає обєкт Intent через метод onNewIntent (), а нова активність запускатися не буде На рис 119 показаний одиночний екземпляр активності singleTop, що знаходиться на верхньому рівні завдання

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

” sіngleTask – Вказує, що активність, яку слід запустити, утворює корінь нового завдання Якщо екземпляр такої активності вже існує, то реалізується таку ж поведінку, як у випадку з singleTop, і обєкт Intent, асоційований з запуском цієї активності, обробляється шляхом виклику до onNewIntent ()

“Singlelnstance – Режим запуску singlelnstance вказує, що запускається активність повинна стати коренем нового завдання, а також визначає, що будь-яка активність, що запускається з цієї активності, також повинна бути в новій завданню Таким чином, гарантується, що активність з таким режимом запуску буде однією-єдиною в своєму завданню

Привязка до задачі

Атрибут android: taskAffіnity може мати те ж значення, що й присвоюється активності атрибут android: name Якщо атрибут android: taskAffіnity не поставити, то його стандартним значенням буде імя пакета, вказане в тезі

Привязка до задачі (task affinity) використовується для приміщення активності в конкретну задачу Тобто якщо вас не влаштовує стандартна поведінка, задане в Android (при якому нові активності стають частиною того завдання, в якій вони були запущені), то можна скористатися привязкою до задачі, що дозволяє перевизначити стандартну поведінку і вказати бажану задачу для даної активності Як правило, ця задача асоційована з додатком, яке реалізує розглянуту активність

Інші атрибути активності, що впливають на поведінку завдання

До інших атрибутів, що змінює поведінку завдання, відноситься в тому числі android: noHistory Якщо цей атрибут має значення true, то, коли користувач залишає активність, вона не переміщається в стек активностей Подібна властивість корисно для таких активностей, як форми входу в систему – дійсно, після того, як пройде аутентифікація, повертатися до цієї активності не потрібно

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

Атрибут android: fіnishOnTaskLaunch викликає завершення будь-якого примірника активності з таким атрибутом, якщо з цим же атрибутом запускається нова активність При використанні такого атрибута розробник гарантує, що з активностей з цим атрітбутом ніколи не утворюється стек, подібна активність є однією-єдиною на всі наявні завдання

Атрибут android: alwaysRetainTaskState, що має значення true, повідомляє систему 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>

*

*