Процессы и потоки - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг

Когда хотя бы один из компонентов приложения (или все приложение) будет востребован, система Android запускает процесс, который содержит единственный основной поток для выполнения. По умолчанию все компоненты приложения работают в этом процессе и потоке.

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

Все компоненты инициализируются в основном потоке процесса. Отдельные потоки для каждого экземпляра обычно не создаются. Следовательно, все методы обратного вызова, определенные в компоненте и вызываемые системой, всегда работают в основном потоке процесса. Это означает, что компонент не должен выполнять в методах обратного вызова длительные операции (например, загрузку файлов из сети или циклы вычисления) или блокировать системный вызов, т. к. это блокирует любые другие компоненты в этом процессе. Для таких операций порождают отдельные потоки.

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

При выборе процесса для уничтожения Android оценивает относительную важность этого процесса с точки зрения пользователя. Порядок, в котором процессы уничтожаются для освобождения ресурсов, определяется приоритетом. Система Android пытается поддерживать процесс приложения максимально долго, но, в конечном счете, будет вынуждена удалить старые процессы, если заканчивается свободная память. Чтобы определить, какой процесс сохранить или уничтожить, Android создает иерархию важности процессов, основанную на компонентах, выполняющихся в процессах и состоянии этих компонентов.

Процессы с самой низкой важностью уничтожаются первыми. Есть пять уровней в иерархии важности (Рис. 9):

иерархия важности процессов

Рис.9 Иерархия важности процессов

Активный процесс (Foreground Process) - тот, который требуется для того, что пользователь в настоящее время делает.

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

Видимый процесс (Visible Process) - тот, который не имеет никаких приоритетных компонентов. Компонент из этого процесса еще может вызываться пользователем.

Сервисный процесс (Service Process) - процесс, в котором выполняется служба и который не относится ни к одной из двух предыдущих категорий.

Фоновый процесс (Background Process) - процесс в котором выполняется деятельность, которую в настоящее время не видима пользователем.

Пустой процесс (Empty Process) - не содержит никаких активных компонентов приложения. Единственная причина сохранять такой процесс - только как кэш, чтобы уменьшить время запуска при вызове компонента. Система уничтожает эти процессы в первую очередь. [4]

Похожие статьи




Процессы и потоки - Разработка мобильного приложения расчета и учета оплаты коммунальных услуг

Предыдущая | Следующая