Как служба переднего плана (другой процесс/тот же процесс) ведет себя, когда Android не хватает памяти

Если Service выполняется в другом процессе (через «:name» внутри манифеста) с флагом переднего плана. В случае, когда система хочет освободить немного памяти.. (представьте себе тяжелый пользовательский интерфейс, пользователь нажимает «Домой» и переходит к другому тяжелому приложению)

  1. убьет ли он только основной процесс для этого приложения, чтобы освободить ресурсы? (очевидно, оставив сервисный процесс нетронутым), а затем перезапустите just основной процесс, когда пользователь вернется к приложению.

  2. Если служба будет работать в том же процессе, освободит ли она все ресурсы, такие как действия, кроме службы переднего плана? или весь процесс (с тяжелым пользовательским интерфейсом) в этом случае будет рассматриваться как передний план, поэтому он потребляет много памяти и не подходит для телефона пользователя.

P.S

Я понимаю, что нет никаких гарантий для службы переднего плана. http://developer.android.com/reference/android/app/Service.html

Я понимаю, что Android-дизайн процессов убийства мгновенно (какой ответ на 2-й вопрос, но хочу быть уверенным)

http://android-developers.blogspot.com/2010/04/multitasking-android-way.html


person AndroidGecko    schedule 18.01.2014    source источник
comment
Небольшое примечание относительно (2): я запустил службу переднего плана из myActivity. Даже если я вызывал finish() для myActivity, что в конечном итоге приводило к вызову onDestroy() для действия, служба переднего плана все еще работала (если только я явно не остановил ее в onDestroy).   -  person Kevin Lee    schedule 02.02.2016


Ответы (1)


  1. Если основной процесс не находится на переднем плане, он будет остановлен и перезапущен при необходимости. Служба переднего плана также может быть уничтожена, если это необходимо, но не раньше, чем будут уничтожены все фоновые процессы. Служба переднего плана будет перезапущена, как только память снова станет доступной.

  2. Да, он освободит все ресурсы и попытается оставить службу работающей. Служба также может быть убита, если необходимо завершить весь процесс. Процесс будет перезапущен с работающей только службой.

person A.J.    schedule 15.12.2014