Страницы

Поиск по вопросам

пятница, 13 марта 2020 г.

Для чего выносят Service в отдельный процесс?

#java #android #android_service


Можете объяснить, для чего Service выносят в отдельный процесс (при помощи добавления
строки android:process в манифесте)?



Сначала я подумал, для того, чтобы, при убийстве приложения (смахиваем пальцем в
диспетчере задач), он не умирал вместе с активностью. Как показала практика — он продолжает
жить.
Потом я подумал, что это сделано для того, чтобы, когда сервис сам себя перезапускает,
не открывалась активность — и тут снова не то! Активность при перезапуске не открывается.
Потом я подумал, что это сделано для того, чтобы не тормозила активность! Но тут
на помощь приходит IntentService...  

Так в чем же заключается смысл?
    


Ответы

Ответ 1



IntentService и Service различны и используются для разных задач. По умолчанию Service действует в UI потоке, а IntentService - в отдельном. Т.е. при сильной нагрузке на обычный сервис будет "тормозить" активити. Просто заменить на IntentService не всегда возможно и целесообразно, т.к. он используется для иных задач (единоразовое действие - сделал и помер) и, по умолчанию, не должен быть "долгоживущим", в отличие от Service (например плеер с управлением им из уведомления). Таким образом Service выносят в отдельный поток когда он должен быть "долгоживущим" и, при этом, не должен "тормозить" активити.

Комментариев нет:

Отправить комментарий