我有来自内容提供商的小部件。我想知道内容提供商中的数据何时发生变化。据我所知,这样做是
context.getContentResolver().registerContentObserver
但是当我添加小部件的第一个实例时,不会调用AppWidgetProvider.onEnabled方法。
这就是我无法制作registerContentObserver
的原因。
与onDisabled相同。
如何解决这个问题?
由于
答案 0 :(得分:6)
您需要将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()的广播。
注意:onWleted(...)的APPWIDGET_DELETED, APPDIDGET_DISABLED用于onDisabled(...)
答案 1 :(得分:3)
AppWidgetProvider
(或任何其他已注册的BroadcastReceiver
}无法致电registerContentObserver()
。正在更改内容的实体需要更新您的应用小部件,或者您需要实施某种轮询机制(例如,根据android:updatePeriodMillis
检查新内容)。