В 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 точки ложны...
Может кто-нибудь мне помочь?
Заранее спасибо
Наконец, я повторил этот вопрос в Android Google Groups, и хороший парень отвечает мне, что документация виджета api на developer.android.com устарела...
https://groups.google.com/d/topic/android-developers/HfD-ojjsuso/discussion