Почему я должен начать городскую службу как отдельный процесс? - PullRequest
4 голосов
/ 02 декабря 2011

Я использую UrbanAirship (UA) для push-уведомлений.

Служба push-уведомлений UA настраивается в файле манифеста следующим образом:

    <service android:name="com.urbanairship.push.PushService"
     android:process=":com.urbanairship.push.process" /> 

Где android: процесс не обязателен, но рекомендуется в их документации .

Когда я использую один процесс и закрываю все свои действия, я вижу, что мой отдельный процесс потребляет ~ 3 МБ памяти

Когда я использую два процесса (один для приложения и один для службы) и закрываю все свои действия, я вижу, что оба процесса живы, каждый потребляет ~ 3 МБ памяти.

Итак, мой вопрос: какой смысл?

1 Ответ

1 голос
/ 26 июня 2014

Я предполагаю, что UA рекомендовал это так, чтобы их собственный код столкнулся с меньшим количеством конфликтов / сбоев.Например, если ваше приложение аварийно завершает работу, но код UA выполняется в отдельном процессе, их код, вероятно, может продолжать работать без сбоев (и избежать возможного повреждения данных, которое может произойти, если процесс, в котором они размещены, будет внезапно уничтожен).Для другой подсказки, посмотрите этот SO вопрос: Запуск уведомления Android при запуске .Как видите, некоторые разработчики сообщают, что общие уведомления Android иногда не отображаются в зависимости от жизненного цикла компонентов их приложения.Поместив UA PushService в отдельный процесс, это может решить эту проблему.Я собираюсь проверить это, потому что мои уведомления UA иногда не сохраняются после перезагрузки.

Между прочим, похоже, что последняя документация UA больше не рекомендует объявлять Сервис отдельным процессом.

...