Как создать активность и службу Android, которые используют отдельные процессы - PullRequest
15 голосов
/ 27 февраля 2012

У меня есть приложение для Android, которое состоит из активности и службы. В настоящее время они оба существуют в одном и том же процессе и используют одну и ту же кучу, но я хочу разделить процесс / кучу для службы. То есть. Я хочу, чтобы служба была полностью независимой от активности, чтобы в случае сбоя действия она не влияла на службу. Однако я хочу, чтобы их можно было устанавливать как одно приложение. Возможно ли это?

Ответы [ 2 ]

22 голосов
/ 27 февраля 2012

Определенно возможно.См. Атрибут process для service в AndroidManifest.xml

http://developer.android.com/guide/topics/manifest/service-element.html

Цитировать:

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

Если имя, назначенное этому атрибуту, начинается с двоеточия (':'), новый процесс, приватк приложению, создается, когда это необходимо, и служба запускается в этом процессе.Если имя процесса начинается со строчной буквы, служба будет запускаться в глобальном процессе с таким именем, если у него есть разрешение на это.Это позволяет компонентам в разных приложениях совместно использовать процесс, сокращая использование ресурсов.

5 голосов
/ 19 августа 2013

IPC для сервисов ИМХО требуется только в том случае, если сервис должен использоваться другими приложениями.

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

Если использование услуги другими приложениями не является обязательным для вас, предпочтите местную услугу. В качестве альтернативы вы все равно можете запустить службу в своем собственном процессе и использовать другое взаимодействие с вашим приложением, например, через приемник вещания. Я попытался описать различные подходы в моем учебном пособии по Android по следующей ссылке: Активность и взаимодействие с сервисом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...