即使我在onreceive中看到android.appwidget.action.APPWIDGET_UPDATE意图,也没有在窗口小部件中调用onUpdate

时间:2010-07-14 04:49:31

标签: android android-widget

我正在使用调试器使用模拟器,我注意到onUpdate没有被调用。当我将小部件添加到模拟器主屏幕时,我看到我的断点在onReceive方法中被击中。 onReceive方法确实获得了android.appwidget.action.APPWIDGET_UPDATE意图。但是,onUpdate函数永远不会被调用。我相信它的定义是正确的。

    @Override
        public void onUpdate(Context context
,AppWidgetManager appWidgetManager,int[] appWidgetIds)
        {
    // code that sets up remove view and updates appWidgetManager


    }

3 个答案:

答案 0 :(得分:19)

在onReceive()

中调用超类方法
@Override
public void onReceive(Context context, Intent intent)
{
    // Chain up to the super class so the onEnabled, etc callbacks get dispatched
    super.onReceive(context, intent);
    // Handle a different Intent
   Log.d(TAG, "onReceive()" + intent.getAction());

}

如果在子类AppWidgetProvider中覆盖onReceive(),则除非调用超类,否则不会触发提供程序的onEnabled,onUpdate等回调。

答案 1 :(得分:0)

您是否为小部件配置了活动设置?因为如果这样做,则不会调用onUpdate,并且首次手动更新窗口小部件是配置活动的工作。之后,应按照updatePeriod配置中的定义调​​用onUpdate。

答案 2 :(得分:0)

你在Android Manifest中有这个吗?

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