Служба Android полезна, когда мне не нужно межпроцессное взаимодействие? - PullRequest
1 голос
/ 29 ноября 2011

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

Я мог бы просто иметь служебный класс с методами dontWantToBeKilled () и canBeKilled ()который бы запустил / остановил фиктивную службу.Кроме того, я не буду использовать Услуги.Это правильно?

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Да, есть и другие причины.

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

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

Документация для Сервиса гласит:

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

Таким образом, вы можете использовать Сервисы, чтобы уменьшить вероятность того, что процесс вашего приложения будет остановлен.

0 голосов
/ 29 ноября 2011

Нет необходимости в том, что если процесс запустил службу, то процесс, скорее всего, будет убит. Фактически процесс остается живым или нет, он не влияет на службу. Это полностью фоновая процедура. Возможно, вы запустили процесс, чтобыПросто запустите службу. Так процесс и служба не могут быть взаимосвязаны, как это.

AFAIK Я не получил ваш последний вопрос правильно.

0 голосов
/ 29 ноября 2011

Даже если Service работает в том же процессе, что и Activity, ничто не гарантирует, что ваш Activity не будет убит.

С Процессы и потоки :

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

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

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