【发布时间】:2011-07-20 17:15:46
【问题描述】:
Android Widget API 有一些我真的不明白的地方。
我编写了一个带有配置 Activity 的小部件,每次使用 adb 安装应用程序时,即使小部件未显示,也会调用 WidgetProvider.onUpdate()。而且有时还有多个appWidgetIds,还有配置Activity启动的时候。
在onUpdate 方法中,我检查了appWidgetManager.getAppWidgetIds() 的值,它返回0 个项目。
public class FlickrWidget
extends AppWidgetProvider
{
/**
* @see android.appwidget.AppWidgetProvider#onUpdate(android.content.Context, android.appwidget.AppWidgetManager, int[])
*/
@Override
public void onUpdate( Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds )
{
Log.d( "FlickrWidget: Start onUpdate with " + appWidgetIds.length + " widgets" );
int[] appWidgetIds2 = appWidgetManager.getAppWidgetIds( new ComponentName( context, FlickrWidget.class ) );
Log.d( "FlickrWidget: installed : " + appWidgetIds2.length + " widgets" ); //display 0 items
for ( int i = 0; i < appWidgetIds2.length; i++ )
{
Log.d( "FlickrWidget : installed appWidgetId = " + appWidgetIds2[i] );
}
for ( int i = 0; i < appWidgetIds.length; i++ )
{
Log.d( "FlickrWidget : appWidgetId = " + appWidgetIds[i] ); // can have multiple items
}
}
}
我不明白,因为我虽然:
-
AppWidgetProvider仅在显示一个或多个小部件时接收广播。 - 配置为
Activity的小部件不会随着启动时的广播而更新。 - 在
onUpdate中调用appWidgetManager.getAppWidgetIds()应该返回与参数中的appWidgetIds相同的int 数组。
在我实验时,所有这 3 个点都是错误的......
有人可以帮我吗?
提前致谢
【问题讨论】:
标签: android android-widget broadcastreceiver