cho*_*how 5 android widget broadcastreceiver android-appwidget
我在网上/书中读到了一些关于App Widget的例子,更新小部件的正常例子是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);
}
Run Code Online (Sandbox Code Playgroud)
它会循环更新每个小部件.
但是现在,我必须实现一个App Widget,它在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);
Run Code Online (Sandbox Code Playgroud)
它没有逐个更新小部件,但实际上所有小部件都立即更新.即使它按我的意愿工作,但我很困惑为什么不需要像以前一样逐个更新所有小部件.
两种方法有什么区别?
我可以发送另一个广播BroadcastReceiver.onReceive()来触发AppWidgetProvider.onUpdate()吗?怎么样?
这是同一件事。Update with ComponentName 会循环遍历所有 id,就像您的第一个代码块一样。
您可以在此处的 Android 代码中看到它:
| 归档时间: |
|
| 查看次数: |
832 次 |
| 最近记录: |