2011-01-19 9 views
5

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?

risposta

Problemi correlati