Инициализирован виджет батареи Android - PullRequest
0 голосов
/ 21 октября 2011

Я создал виджет батареи, который использует Сервис для прослушивания изменений батареи. Однако из-за этого при создании виджет должен дождаться изменения состояния батареи, прежде чем он сможет отображать данные.

Мой вопрос заключается в том, существует ли простой метод опроса батареи как единичного случая.

Возможно, я лаю не на том дереве, но я пытался использовать BroadcastReceiver в классе AppWidgetProvider, чтобы получить начальное состояние батареи, но не могу понять, как это остановить, чтобы служба могла оттуда его извлечь.

Есть мысли?

Приветствия

1 Ответ

2 голосов
/ 21 октября 2011

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

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

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

Однако из-за этого при создании виджет должен ждать, пока состояние батареи изменится, прежде чем он сможет отображать данные.

Нет.Когда вы регистрируетесь на ACTION_BATTERY_CHANGED, ваш BroadcastReceiver немедленно вызывается с последней отправленной трансляцией для этого действия, поскольку ACTION_BATTERY_CHANGED является залипшей трансляцией.

Вы можете видеть, что в этом примерепроект .Информация об аккумуляторе отображается в действии немедленно - это возможно только потому, что метод onReceive() вызывается немедленно.

Мой вопрос заключается в том, существует ли простой метод опроса аккумулятора какодин случай.

Это тоже возможно.Звоните registerReceiver() для ACTION_BATTERY_CHANGED, но с null BroadcastReceiver.Вам будет возвращено последнее отправленное сообщение Intent для этого действия.Это был бы способ обработать это, например, из события AlarmManager.

...