Ho letto alcuni esempio in Internet/libro sulla App Widget, un esempio di normale per aggiornare il widget è in onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds)
metodo AppWidgetProvider come questo:Qual è la differenza per aggiornare il widget dell'app Android tra due approcci?
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);
}
Si aggiornare ogni Widget in un ciclo.
Ma ora, devo implementare un App Widget, viene aggiornato in BroadcastReceiver, onReceive(Context context, Intent intent)
metodo poiché non ci sono int [] appWidgetIds passati in Così ho implementato il codice come questo:.
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);
E ' non aggiorna il widget uno alla volta, ma in realtà tutti i widget sono stati aggiornati contemporaneamente. Anche se ha funzionato come voglio, ma mi sono confuso sul motivo per cui non è necessario aggiornare tutti i widget uno per uno come prima.
Qual è la differenza tra due metodi?
Posso inviare un'altra trasmissione da BroadcastReceiver.onReceive()
per attivare AppWidgetProvider.onUpdate()
? E come?