Какой лучший вид запуска сервиса для загрузки данных в этот сервис в Android - PullRequest
0 голосов
/ 20 сентября 2018

Мне нужно добавить данные на сервер в Service?Как известно, система Android убивает процессы в случае нехватки памяти.И в любое время мой сервис может быть убит до окончания загрузки?Как избежать этой неприятности?Я хочу позвонить stopSelf(), когда загрузка завершена.Какую константу я должен использовать, чтобы избежать этого?

https://developer.android.com/reference/android/app/Service#START_CONTINUATION_MASK

1 Ответ

0 голосов
/ 20 сентября 2018

Как избежать этой неприятности?Я хочу вызвать stopSelf () после завершения загрузки.Какую константу я должен использовать, чтобы избежать этого?

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

Как известно Androidсистема убивает процессы в случае нехватки памяти.И в любое время мой сервис может быть убит, пока загрузка не будет завершена?

Вы можете использовать startForeground сервис в качестве

Запущенный сервисможно использовать API startForeground (int, Notification), чтобы перевести службу в состояние переднего плана, где система считает ее user is actively aware of and thus not a candidate for killing when low on memory.

для

Какую константу я должен использовать, чтобы избежать этого?

Использование

START_STICKY: для перезапуска службы после Killed (намерение будет нулевым при перезапуске)

START_REDELIVER_INTENT: перезапустить службу после убийства и получить то же намерение, которое было получено в первый раз

Примечание: очень немногие устройства не следуют START_STICKY и аналогичным инструкциям.

Справка:

Как автоматически перезапустить службу, даже если пользователь принудительно ее закрыл?

...