Главная » Разработка для Android » Приоритеты приложений и состояния процессов

0

Порядок,  в котором завершается работа процессов с целью освобожде- ния ресурсов, определяется их приоритетами. Этот показатель  берется из самого приоритетного компонента.

Если приоритет двух приложений одинаковый, первым будет закрыто то, которое дольше всего проработало  с пониженным приоритетом.  На при- оритет процесса  также влияют  межпрограммные связи.  Допустим,  одно

приложение зависит от Сервиса или Источника данных, которые предостав- ляются другим приложением. Из этого следует, что у второго приложения приоритет как минимум не ниже, чем у первого.

ПРИМЕЧАНИЕ

Любые приложения в Android продолжают работу и остаются в памяти до тех пор, пока системе не потребуются ресурсы для других программ.

Важно, чтобы структура  приложения была корректной  и чтобы его приоритет  соответствовал работе, которую  оно выполняет.  В противном случае приложение может закрыться во время выполнения каких-то  важ- ных действий.

Опишем  каждое из программных  состояний,  показанных на рис. 3.3, и объясним, как их определять, учитывая  компоненты приложения.

• Активные процессы.  Активные  процессы  (на переднем плане)  со- держат компоненты,  взаимодействующие с пользователем. Android поддерживает их отзывчивость, освобождая дополнительные ресурсы. Как правило, таких процессов очень мало и они закрываются в самую последнюю очередь.

Активные процессы включают в себя:

§ объекты Activity  в активном  состоянии,  то есть те, которые нахо- дятся на переднем плане и отвечают на пользовательские события (более подробно о состоянии Активностей далее в этой главе);

§ Широковещательные приемники,  обрабатывающие события  с помо- щью методов onReceive;

§ Сервисы, в которых запущены  обработчики  onStart, onCreate или onDestroy;

§ Сервисы, предназначенные для работы на переднем плане.

• Видимые процессы. Видимые, но не выполняющиеся в данный мо- мент процессы содержат Активности, которые отображаются на экране. Речь о видимых Активностях, которые не находятся на переднем плане и не отвечают на пользовательские события. Это происходит,  когда Активность частично  перекрыта  (диалоговым окном или другой по- лупрозрачной Активностью). Процессов, которые выводятся на экран, очень мало, поэтому их работа прерывается только в крайнем случае, если не хватает ресурсов для активных приложений.

• Процессы с запущенными Сервисами. Это процессы, содержащие работающие  Сервисы. Компоненты Service могут выполняться не- прерывно  и не должны иметь графического  интерфейса. Поскольку фоновые Сервисы не взаимодействуют с пользователем напрямую, они получают немного меньший приоритет, чем видимые Активности. На- личие таких Сервисов выводит процесс на передний план и делает его преждевременное завершение  возможным, только если потребуются ресурсы для активных или видимых приложений. Больше о Сервисах читайте в главе 9.

• Фоновые  процессы.  Процессы,  не имеющие ни видимых  Активно- стей, ни работающих Сервисов. Как правило, существует множество фоновых процессов, работа которых будет завершаться по принципу

«последний запущенный закрывается первым», чтобы освободить ресурсы для приложений, работающих на переднем плане.

• Холостые процессы.  Для  улучшения общей производительности системы  Android  часто сохраняет  в памяти  приложения, которые завершили жизненный цикл. Android поддерживает этот кэш, чтобы уменьшить время повторного запуска программ. Работа таких про- цессов прерывается при необходимости.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии