Что лучше для battery_changed? широковещательные приемники, или сервис, или intentService?

Я хочу, чтобы мое приложение узнало об изменении процента заряда батареи, если телефон заряжается.

Итак, я использовал 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, когда телефон заряжается.

Радиоприемники всегда лучше прислушиваться к системным изменениям

Deepak kaku 23.05.2018 00:32

Вы не можете зарегистрировать получатели в манифесте для большинства неявных трансляций на Android 8 и новее из-за ограничений фонового выполнения.

mike47 27.04.2019 22:07
0
2
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

BroadcastReceivers и сервис - это разные вещи

Приемники широковещательной передачи предназначены для прослушивания некоторых событий и выполнения действий с ними, в то время как службы используются для выполнения некоторых задач в фоновом режиме (без активности), например, воспроизведение музыки в фоновой службе.

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

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

Другие вопросы по теме