AppWidgetProvider:未调用onEnabled方法

时间:2011-03-30 08:10:24

标签: android android-appwidget

我有来自内容提供商的小部件。我想知道内容提供商中的数据何时发生变化。据我所知,这样做是

context.getContentResolver().registerContentObserver

但是当我添加小部件的第一个实例时,不会调用AppWidgetProvider.onEnabled方法。 这就是我无法制作registerContentObserver的原因。 与onDisabled相同。

如何解决这个问题?

由于

2 个答案:

答案 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检查新内容)。