Какая разница в обновлении Android App Widget между двумя подходами?

Я прочитал какой-то пример в Интернете / книге о onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) приложений, обычный пример обновления виджета – в onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) метод AppWidgetProvider:

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

Он обновляет каждый виджет в цикле.

Но теперь я должен реализовать виджет приложения, он обновляется в режиме BroadcastReceiver, onReceive(Context context, Intent intent) так как нет int [] appWidgetIds. В результате я реализовал такой код:

 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); 

Он не обновлял виджет один за другим, но на самом деле все виджеты были обновлены сразу. Несмотря на то, что он работал так, как я хочу, но я запутался в том, почему нет необходимости обновлять все виджеты поочередно.

В чем разница между двумя методами?

Можно ли отправить другую трансляцию из BroadcastReceiver.onReceive() для запуска AppWidgetProvider.onUpdate() ? И как?

Это то же самое. Обновление с помощью ComponentName включает все идентификаторы, такие как ваш первый блок кода.

Вы можете увидеть его в коде Android здесь:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/4.0.4_r1.2/com/android/server/AppWidgetService.java#AppWidgetService.updateAppWidgetProvider%28android. content.ComponentName% 2Candroid.widget.RemoteViews% 29