0

我创建了一个电池小部件,它使用服务来监听电池变化。然而,正因为如此,当创建小部件时,它必须等待电池状态发生变化,然后才能显示数据。

我的问题是是否有一种简单的方法可以一次性检查电池。

我可能会叫错树,但我尝试在 AppWidgetProvider 类中使用 BroadcastReceiver 来获取电池的初始状态,但无法弄清楚如何停止它,以便服务可以从那里获取它。

有什么想法吗?

干杯

4

1 回答 1

2

我创建了一个电池小部件,它使用服务来监听电池变化。

请注意,始终保持服务通常不是一个好主意。用户不喜欢它,他们会用任务杀手或“设置”中的“管理服务”屏幕将其关闭。Android 也不喜欢它,最终会停止它。

由于电池电量变化不是很频繁,请考虑切换到您使用的型号AlarmManager并每隔几分钟检查一次电池电量。

然而,正因为如此,当创建小部件时,它必须等待电池状态发生变化,然后才能显示数据。

不会。当您注册 时ACTION_BATTERY_CHANGED,您BroadcastReceiver会立即使用该操作的最后发送广播调用,因为这ACTION_BATTERY_CHANGED是一个粘性广播。

您可以在此示例项目中看到这一点。电池信息会立即显示在 Activity 中——这只有在onReceive()立即调用该方法时才有可能。

我的问题是是否有一种简单的方法可以一次性检查电池。

这也是可能的。呼吁registerReceiver()ACTION_BATTERY_CHANGED但与null BroadcastReceiver。您将返回该Intent操作的最后发送广播。例如,这将是从AlarmManager事件中处理它的方式。

于 2011-10-21T15:18:03.263 回答