Как часто отправляются ACTION_BATTERY_CHANGED на реальных устройствах?
В эмуляторе, если я установил power capacity
на значение, отличное от текущего значения, мой BroadcastReceiver
"s onReceive
вызывается с новым значением. (Я зарегистрировался в ACTION_BATTERY_CHANGED
.)
В реальном устройстве, батарея которого разряжается от 100 до 20 процентов в течение нескольких дней, onReceive
метод называется:
- ровно 80 раз,
- более 80 раз или
- менее чем в 80 раз?
Re: возможный дублирующий вопрос - я также обеспокоен тем, что обработчик вызывается недостаточно часто. Я также не сделал ошибку при регистрации приемника вещания из другого приемника вещания.
2 ответа
Кажется, что наиболее распространенным поведением является отправка ровно 80 сообщений, но некоторые устройства будут отправлять больше или меньше. Это существенно различается среди реальных устройств, и поэтому его необходимо будет сравнить для конкретных устройств, которые вы будете использовать, или обрабатывать в общем случае.
Для большинства устройств, с которыми я работал, ACTION_BATTERY_CHANGED
будет отправлено ровно 80 раз в этом сценарии. (Намерение также будет отправлено, когда устройство подключено и отключено.)
Однако для небольшого количества моделей сообщение отправляется каждый раз, когда изменяется температура аккумулятора. Это может происходить очень часто, в зависимости, в частности, от объема обработки, выполняемой планшетом. Я работаю по памяти, но я верю, что планшет Verizon Ellipsis 7 ведет себя так.
Кроме того, некоторые устройства, по-видимому, отправляют сообщения менее одного раза на 1% изменения уровня заряда батареи. Вот пример более частых сообщений, а вот пример меньшего количества сообщений.
Android не гарантирует, что, например. при разряде батареи от 100 до 80% система не гарантирует, что она будет отправлять 20 событий один раз за процент разряда батареи. Многие параметры учитываются. Вы можете найти простое объяснение здесь
Если вы хотите отслеживать разрядку батареи, делайте пул вовремя. Количество событий от системы может варьироваться от устройства к устройству.