2011-01-19 6 views
5

czytałem jakiś przykład w Internet/książki o App Widget, normalny przykład zaktualizować widget jest w onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) metody AppWidgetProvider jak ten:Jaka jest różnica między aktualizowaniem aplikacji na Androida a dwoma podejściami?

final int N = appWidgetIds.length; 
for (int i=0; i<N; i++) { 
int appWidgetId = appWidgetIds[i]; 
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.mywidget_layout); 
updateViews.setTextViewText(R.id.mytext, "updated text"); 

appWidgetManager.updateAppWidget(appWidgetId, updateViews);  
} 

zaktualizować każdy widżety w pętli.

Ale teraz, muszę wdrożyć widget aplikacji, jest ona aktualizowana BroadcastReceiver, onReceive(Context context, Intent intent) metodę, ponieważ nie istnieją żadne int [] appWidgetIds przeszły w So I wdrożone kod jak poniżej:.

RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.mywidget_layout); 
updateViews.setTextViewText(R.id.mytext, "updated text"); 

ComponentName myComponentName = new ComponentName(context, AndroidBatteryWidgetProvider.class); 
AppWidgetManager manager = AppWidgetManager.getInstance(context); 
manager.updateAppWidget(myComponentName, updateViews); 

It nie aktualizowano widgetu jeden po drugim, ale w rzeczywistości wszystkie widżety były aktualizowane od razu. Mimo że działało tak, jak chcę, ale nie rozumiałem, dlaczego nie ma potrzeby aktualizowania wszystkich widgetów jeden po drugim, tak jak poprzednio.

Jaka jest różnica między dwiema metodami?

Czy mogę wysłać kolejną transmisję z numeru BroadcastReceiver.onReceive(), aby uruchomić AppWidgetProvider.onUpdate()? A jak?

Odpowiedz