Мониторинг уровня заряда батареи программно в Android - BroadcastReceiver vs Handler

Мне было интересно, что было бы более эффективным способом программного контроля уровня заряда батареи в Android - используя BroadcastReciever, который непрерывно контролирует уровень заряда батареи, или обработчик, который проверяет уровень заряда батареи каждые 10 минут, используя postDelayed звонки с использованием Runnable?

Я хотел бы предупредить пользователя, когда уровень заряда батареи падает ниже определенного процента. Какой способ будет более эффективным?

1 ответ

Решение

Для проверки текущего уровня заряда батареи устройства, которое вы хотите использовать BraodcastReceiver который слушает Intent.ACTION_BATTERY_CHANGED События. Таким образом, ваш приемник выполняет работу только в том случае, если уровень заряда батареи действительно изменился.

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

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