2011-03-30 43 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