1

I have widget that display data from content provider. I want to know when data in content provider changes. As far as I know way to do it is

context.getContentResolver().registerContentObserver

But AppWidgetProvider.onEnabled method is not called when I add first instance of the widget. That's why I can't make registerContentObserver. The same with onDisabled.

How to solve this problem?

Thanks

4

2 回答 2

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() 的广播。

注意: APPWIDGET_DELETED 用于 onDeleted(...),APPWIDGET_DISABLED 用于 onDisabled(...)

于 2011-10-12T23:06:01.943 回答
3

AppWidgetProvider或任何其他清单注册的BroadcastReceiver)不能调用registerContentObserver(). 正在更改您的内容的实体将需要更新您的应用小部件,或者您将需要实施某种轮询机制(例如,检查基于 的新内容android:updatePeriodMillis)。

于 2011-03-30T11:08:42.613 回答