BroadcastReceiver, который работает, даже когда приложение закрыто - PullRequest
0 голосов
/ 12 октября 2018

У меня есть вопрос о BroadcastReceivers.У меня есть приложение, которое должно постоянно получать намерение ACTION_TIME_TICK обновить виджеты часов.Я реализовал сервис переднего плана, который содержит BroadcastReceiver, который прослушивает это действие.Но на android oreo единственный способ запустить службу - это запустить ее в качестве службы переднего плана, которая подразумевает постоянное уведомление пользователя, уведомляющее о том, что приложение работает в фоновом режиме.Я не хочу показывать пользователю это уведомление.Я пытался реализовать BroadcastReceiver внутри класса приложения.Но это не работает правильно.В некоторых случаях BroadcastReceiver не работает, а в некоторых случаях работает хорошо.Даже если это работает хорошо, если приложение удалено из недавних задач, BroadcastReceiver перестает работать.Есть ли способ использовать BroadcastReceiver, который работает бесконечно без использования службы?

1 Ответ

0 голосов
/ 15 октября 2018

Есть ли способ использовать BroadcastReceiver, который работает бесконечно без использования службы?

В случае ACTION_TIME_TICK: Нет, поскольку вы не можете использовать манифест-объявлен BroadcastReceiver.

Поскольку вы не желаете использовать службу переднего плана, вы можете захотеть изучить START_STICKY.В этой ситуации это единственный способ максимизировать время выполнения вашей службы: разрешить системе перезапустить ее, капризно, после того, как она была остановлена ​​из-за нехватки ресурсов.Конечно, это означает, что ваши часы могут перестать обновляться в течение сколь угодно длительных периодов времени.

Обратите внимание, что ваша проблема не ограничивается Oreo (Oreo не требует, чтобы вы работали на переднем плане, но оно накладывает определенные ограниченияна то, что вам разрешено делать, если вы НЕ на переднем плане).Даже в более ранних ОС, если вы не на переднем плане, система считает вас главным кандидатом на удаление.

...