Сколько процессов использует каждый Android APK? Как это решено (используя какой код)?

Вот что говорит официальная документация Android по Google :

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

Необычной и фундаментальной особенностью Android является то, что время жизни процесса приложения напрямую не контролируется самим приложением. Вместо этого она определяется системой посредством комбинации частей приложения, которые, как известно системе, работают, насколько эти вещи важны для пользователя и сколько общего объема памяти доступно в системе.

Чтобы определить, какие процессы должны быть остановлены при нехватке памяти, Android помещает каждый процесс в «иерархию важности» на основе запущенных в них компонентов и состояния этих компонентов. Эти типы процессов (в порядке важности):

  • Процесс переднего плана — тот, который требуется для того, что пользователь делает в настоящее время. Различные компоненты приложения могут по-разному рассматривать его содержащий процесс. Процесс считается находящимся на переднем плане, если выполняется любое из следующих условий:
  • Видимый процесс выполняет работу, о которой в данный момент знает пользователь, поэтому его уничтожение окажет заметное негативное влияние на взаимодействие с пользователем. Процесс считается видимым в следующих условиях:
    • Он запускает Activity, которая видна пользователю на экране, но не на переднем плане (был вызван его метод onPause () ). Это может произойти, например, если основной вид деятельности отображается в виде диалога, который позволяет увидеть предыдущий вид деятельности за ним.
    • У него есть Служба, которая работает в качестве службы переднего плана через Service.startForeground () (которая просит систему воспринимать службу как нечто, что пользователь знает или по существу видимый для них).
    • Это хостинг сервиса, который система использует для определенной функции, известной пользователю, например, живые обои, сервис метода ввода и т. Д.
  • Сервисный процесс — это тот, который содержит Сервис , который был запущен методом startService () . Хотя эти процессы непосредственно не видны для пользователя, они, как правило, делают то, о чем заботится пользователь (например, фоновая загрузка или выгрузка сетевых данных), поэтому система всегда будет поддерживать такие процессы, если не будет достаточно памяти для сохранения всех данных. передний план и видимые процессы.
  • Кэшируемый процесс — это тот, который в данный момент не нужен, поэтому система может убить его по своему усмотрению, когда требуется память в другом месте. В нормально функционирующей системе это единственные процессы, задействованные в управлении памятью: хорошо работающая система будет всегда иметь в наличии несколько кэшированных процессов (для более эффективного переключения между приложениями) и регулярно убивать самые старые из них по мере необходимости. Только в очень критических (и нежелательных) ситуациях система может достичь точки, в которой все кэшированные процессы будут уничтожены, и она должна начать уничтожение сервисных процессов.

Если вам нужна дополнительная помощь с приложениями для Android, свяжитесь с нашей командой .

0

Ура! Вы первые нашли эту информацию, сделайте доброе дело, поделитесь ей в: