我在網上/書上看到一些例如約在App窗口小部件,一個正常的例子來更新窗口小部件是的AppWidgetProvider的onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds)
方法是這樣的:兩種方法之間更新Android App Widget有什麼不同?
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);
}
它更新一個循環的每個窗口小部件。
但現在,我必須實現一個應用程序窗口小部件,它在廣播接收器,因爲有在沒有通過INT [] appWidgetIds更新,onReceive(Context context, Intent intent)
方法所以我實現這樣的代碼:
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()
嗎?以及如何?