2011-03-30 94 views
1

我有显示来自内容提供者的数据的小部件。我想知道内容提供者中的数据何时发生变化。据我知道的方式来做到这一点是AppWidgetProvider:未调用onEnabled方法

context.getContentResolver().registerContentObserver

但是当我新增的小工具的第一个实例AppWidgetProvider.onEnabled方法不叫。 这就是为什么我不能让registerContentObserver。 与onDisabled相同。

如何解决这个问题?

由于

回答

3

AppWidgetProvider(或任何其它清单登记BroadcastReceiver)不能调用registerContentObserver()。正在更改内容的实体需要更新您的应用小部件,否则您需要实施某种轮询机制(例如,根据android:updatePeriodMillis检查新内容)。

5

您需要android.appwidget.action.APPWIDGET_ENABLED添加为另一个动作:

<intent-filter> 
    <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
    <action android:name="android.appwidget.action.APPWIDGET_ENABLED" /> 
    <action android:name="android.appwidget.action.APPWIDGET_DELETED" /> 
    <action android:name="android.appwidget.action.APPWIDGET_DISABLED" /> 
</intent-filter> 

不这样做,您将不会收到触发onEnabled广播()。

注:APPWIDGET_DELETED为onDeleted(...), APPWIDGET_DISABLED为onDisabled(...)

+0

没有它帮助你的? – GalDude33 2011-10-25 11:29:13

+0

帮我!感谢您的正确回答 – 2012-03-05 22:11:43

+0

这是否正确?官方示例WeatherListWidget处理onEnabled,但其清单中没有此Action。 – 2013-02-05 07:35:50

相关问题