WidgetProvider получает трансляцию, пока не отображается виджет

1

В API Android Widget я действительно не понимаю.

Я написал виджет с активностью конфигурации, и каждый раз, когда я устанавливаю приложение с помощью 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
        }
    }
}

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

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

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

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

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

Теги:
broadcastreceiver
android-widget

1 ответ

1
Лучший ответ

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню