【问题标题】:What the difference to update Android App Widget between two approach?两种方法更新 Android App Widget 有什么区别?
【发布时间】:2011-01-19 23:02:16
【问题描述】:

我在互联网/书籍中阅读了一些关于 App Widget 的示例,更新小部件的正常示例在 AppWidgetProvider 的 onUpdate(Context context, AppWidgetManager appWidgetManager,int[] appWidgetIds) 方法中,如下所示:

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

它循环更新每个小部件。

但是现在,我必须实现一个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);

它并没有逐个更新小部件,但实际上所有小部件都同时更新了。尽管它可以按我的意愿工作,但我对为什么不需要像以前一样逐个更新所有小部件感到困惑。

两种方法有什么区别?

我可以从BroadcastReceiver.onReceive() 发送另一个广播来触发AppWidgetProvider.onUpdate() 吗?怎么做?

【问题讨论】:

    标签: android widget broadcastreceiver android-appwidget


    【解决方案1】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-08
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      • 2020-02-14
      • 2011-01-10
      相关资源
      最近更新 更多