WidgetProvider получает трансляцию, пока не отображается виджет - PullRequest
1 голос
/ 22 марта 2011

Есть кое-что, чего я действительно не понимаю с API виджетов Android.

Я написал виджет с конфигурацией 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
        }
    }
}

Я не понимаю, потому что я все же:

  1. AppWidgetProvider получает трансляцию только тогда, когда отображается один или несколько виджетов.
  2. Виджет с конфигурацией Activity не обновляется при запуске трансляции.
  3. Вызов appWidgetManager.getAppWidgetIds() в onUpdate должен возвращать тот же массив int, что и appWidgetIds в параметрах.

Пока я экспериментирую, все эти 3 точки ложные ...

Может кто-нибудь мне помочь?

Заранее спасибо

1 Ответ

1 голос
/ 25 марта 2011

Наконец, я повторил этот вопрос на Android Google Groups, и один хороший парень ответил, что документация API Widget на developer.android.com устарела ...

https://groups.google.com/d/topic/android-developers/HfD-ojjsuso/discussion

...