Я хочу, чтобы мое приложение узнало об изменении процента заряда батареи, если телефон заряжается.
Итак, я использовал BroadcastReceiver с ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED, чтобы зарегистрировать другой BroadcastReceiver с ACTION_BATTERY_CHANGED, когда телефон заряжается, а затем я подумал: «Не лучше ли использовать Service?»
Затем я поискал Service и увидел IntentService, так что теперь мне интересно, что лучше для ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED, а что лучше для ACTION_BATTERY_CHANGED?
Я думаю, мне следует использовать BroadcastReceiver для ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED и IntentService для ACTION_BATTERY_CHANGED, я ошибаюсь?
Я хочу, чтобы ACTION_POWER_CONNECTED и ACTION_POWER_DISCONNECTED работали всегда и вечно (за исключением случаев, когда я нашел лучший способ), и запускал ACTION_BATTERY_CHANGED, когда телефон заряжается.
Вы не можете зарегистрировать получатели в манифесте для большинства неявных трансляций на Android 8 и новее из-за ограничений фонового выполнения.
BroadcastReceivers и сервис - это разные вещи
Приемники широковещательной передачи предназначены для прослушивания некоторых событий и выполнения действий с ними, в то время как службы используются для выполнения некоторых задач в фоновом режиме (без активности), например, воспроизведение музыки в фоновой службе.
Служба намерений разработана поверх службы для длительных задач, которые должны выполняться в отдельном потоке.
В вашем сценарии лучшим ответом будет использование широковещательного приемника. Он будет вызываться каждый раз, и нет необходимости отключать его после того, как вы выполнили свою задачу, в отличие от сервисов
Радиоприемники всегда лучше прислушиваться к системным изменениям