Когда служба должна быть остановлена

1

My Android-приложение запускает службу в обратном вызове onCreate() класса, который расширяет Application. Служба выполняет некоторые фоновые задачи, которые относятся к пользователю только во время работы приложения. По этой причине я хотел бы закрыть службу, когда последняя активность приложения закрыта. Я попытался выполнить закрытие службы в обратном вызове onTerminate(), но он никогда не вызывается. Итак, каково было бы лучшее место, где служба должна быть закрыта?

Спасибо!

  • 0
    В Android нет понятия «когда приложение запущено», равно как и в веб-приложениях понятие «когда приложение запущено». Либо ведите бухгалтерию самостоятельно, чтобы отслеживать «когда последняя активность приложения закрыта» (что вы считаете «закрытыми» означает), либо переписайте свое приложение, чтобы иметь более разумную политику обслуживания. Лишь немногим приложениям требуется, чтобы служба работала непрерывно в режиме «пока приложение запущено» - либо работа должна продолжаться до завершения, либо работа должна продолжаться до тех пор, пока пользователь не скажет вам остановиться, или что-то в этом роде.
Теги:

2 ответа

2
Лучший ответ

Служба Android, после ее запуска, будет продолжать работать до тех пор, пока не вызывается Context.stopService() или stopSelf().

Существуют различные крючки, которые вы можете использовать для остановки службы, используя Context.stopService(сама служба или обратный вызов onDestroy()/onPause в одном из действий или нажатие кнопки).

Правда, Android делает некоторое управление ресурсами, но может потребоваться много времени, прежде чем Android решит прекратить ваши услуги. И служба, которая работает, но ничего не делает, просто потребляет ресурсы на телефоне, которые могут понадобиться другим приложениям.

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

0

Обратный вызов onPause() будет выполняться, когда ваша деятельность приостановлена ​​по какой-либо причине, и вы знаете, что когда это произойдет, ваше приложение не будет отображаться снова до тех пор, пока не вызывается onResume(). Если у вашей службы есть причина для запуска в прецеденте, что ваша деятельность может быть запущена в ближайшее время, вы должны добавить запись в свою службу, которую вызовы onPause() устанавливают для отсрочки завершения службы. В onResume() вы можете отменить это отсроченное завершение через другую запись.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню