为什么我们必须从一个小部件更新多个小部件?

时间:2017-08-24 09:48:04

标签: java android android-widget android-broadcastreceiver

我在android中写了几个小部件,但有一件事总让我好奇。在onUpdate()方法中,我们循环遍历所有小部件ID,并且它说可以有多个小部件处于活动状态,因此更新所有小部件。但为什么我们必须从这样的一个小部件更新其他小部件?

override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
    // There may be multiple widgets active, so update all of them
    for (appWidgetId in appWidgetIds) {
        updateAppWidget(context, appWidgetManager, appWidgetId)
    }
}

每个小部件都有自己的广播版,每个小部件都可以自行运行。为什么我们必须从另一个小部件调用更新?

如果这是一个非常简单的逻辑,请轻易提出我的问题。

1 个答案:

答案 0 :(得分:1)

  

每个小部件都有自己的广播转发器

不,它没有。

首先,AppWidgetProvider类处理该提供程序提供的所有应用程序小部件。如果用户创建该应用小部件的多个实例(例如,多个城市的天气预报),则所有这些实例都会由该单个AppWidgetProvider类更新。

其次,AppWidgetProvider的单个实例用于单个onUpdate()调用。这是因为AppWidgetProviderBroadcastReceiver的子类,onUpdate()onReceive()触发,并且清单注册的BroadcastReceiver每{{1}获取一个唯一实例调用。