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

Why do we have to update multiple widgets from one widget?

我在 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)
    }
}

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

如果这是一个非常简单的逻辑,请轻松接受我的问题。

Every widget has its own Broadcast reviever

不,不是。

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

更新

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