Страницы

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

пятница, 31 мая 2019 г.

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

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

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


Ответ

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

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

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