我创建了一个电池小部件,它使用服务来监听电池更改。 但是正因为如此,创建小部件时必须等到电池状态发生变化才能显示数据。
我的问题是,是否有一种简单的方法可以一次性查询电池。
我可能正在咆哮错误的树,但我尝试在AppWidgetProvider类中使用BroadcastReceiver来获取电池的初始状态但是无法弄清楚如何停止它以便服务可以从那里。
有什么想法吗?
干杯
答案 0 :(得分:2)
我创建了一个电池小部件,它使用服务来监听电池更换。
请注意,始终保持服务通常不是一个好主意。用户不喜欢它,并将使用任务杀手或“设置”中的“管理服务”屏幕将其终止。 Android也不喜欢它,最终会阻止它。
由于电池电量不会经常变化,请考虑切换到使用AlarmManager
的型号并每隔几分钟检查一次电池电量。
然而正因为如此,创建小部件时必须等到电池状态发生变化才能显示数据。
没有。当您注册ACTION_BATTERY_CHANGED
时,由于BroadcastReceiver
是一个粘性广播,您的ACTION_BATTERY_CHANGED
会立即使用上次发送的广播进行调用,因为onReceive()
是一个粘性广播。
您可以在this sample project中看到。电池信息会立即显示在活动中 - 这是唯一可能的,因为会立即调用registerReceiver()
方法。
我的问题是,是否有一种简单的方法可以一次性查询电池。
这也是可能的。致ACTION_BATTERY_CHANGED
null
,BroadcastReceiver
Intent
。您将收到该行动的最后发送的广播AlarmManager
。例如,这将是从{{1}}事件处理它的方法。