2011-03-22 50 views
1

也有一些是我真的不與Android的Widget API理解。WidgetProvider接收廣播雖然沒有插件顯示

我寫了一個帶配置Activity的小部件,每次我用adb安裝應用程序時,即使未顯示小部件,也會調用WidgetProvider.onUpdate()。而且有時也有多個appWidgetIds,也當配置活動開始。

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 
     } 
    } 
} 

我不明白,因爲我雖然:

  1. AppWidgetProvider接收廣播時,纔會有顯示的一個或多個部件。
  2. 與配置Activity一個小部件不更新與啓動了廣播。
  3. 撥打onUpdateappWidgetManager.getAppWidgetIds()應該返回比參數appWidgetIds相同int數組。

當我嘗試所有的3個點都是假的......

有人能幫助我嗎?

在此先感謝

回答