Есть ли способ использовать BroadcastReceiver, который работает бесконечно без использования службы?
В случае ACTION_TIME_TICK
: Нет, поскольку вы не можете использовать манифест-объявлен BroadcastReceiver.
Поскольку вы не желаете использовать службу переднего плана, вы можете захотеть изучить START_STICKY
.В этой ситуации это единственный способ максимизировать время выполнения вашей службы: разрешить системе перезапустить ее, капризно, после того, как она была остановлена из-за нехватки ресурсов.Конечно, это означает, что ваши часы могут перестать обновляться в течение сколь угодно длительных периодов времени.
Обратите внимание, что ваша проблема не ограничивается Oreo (Oreo не требует, чтобы вы работали на переднем плане, но оно накладывает определенные ограниченияна то, что вам разрешено делать, если вы НЕ на переднем плане).Даже в более ранних ОС, если вы не на переднем плане, система считает вас главным кандидатом на удаление.