条件更新android小部件

时间:2010-08-09 17:21:37

标签: android widget android-appwidget onupdate

我刚开始使用android开发并编写了一个应用程序来显示有关电池状态的详细信息。 现在我想把整个东西放到一个小部件中 - 这就是问题所在: 我是否真的需要在后台使用更新服务来侦听ACTION_BATTERY_CHANGED意图?我的第一个想法是只放一个 在AndroidManifest.xml中输入小部件的intet-filter标签 - 但显然它并不那么简单。 如果UpdateService是正确的方式我会这样做 - 但我只是想确定适当的解决方案是什么

3 个答案:

答案 0 :(得分:4)

  

我真的需要更新服务吗?   要倾听的背景   ACTION_BATTERY_CHANGED意图?

您无法为BroadcastReceiver使用已注册的ACTION_BATTERY_CHANGED。它只能通过活动或服务registerReceiver()注册。

如果由于其他原因在内存中没有服务,更好的方法是轮询。设置AlarmManager以经常检查电池电量(可配置,请!)。要检查电池电量,请致电registerReceiver() ACTION_BATTERY_CHANGED IntentFilter,而不要BroadcastReceiver(第一个参数为null)。这将返回上次广播ACTION_BATTERY_CHANGED Intent,您可以从中获得最近的费用级别。

答案 1 :(得分:2)

我建议您定期轮询电池状态,例如每30分钟一次。为此,您只需在updatePeriodMillis

中指定AppWidgetProviderInfo的值即可
<appwidget-provider
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:updatePeriodMillis="1800000" />

..并通过覆盖onUpdateAppWidgetProvider方法更新您的小部件。

编辑:正如Martin所指出的那样,30分钟实际上是您可以通过这种方式接收更新的最短时间间隔。

答案 2 :(得分:1)

信不信由你,以下作品:

cont.getApplicationContext().registerReceiver(rec, filter);