我正在使用调试器使用模拟器,我注意到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
}
答案 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>