为什么我们必须从一个小部件更新多个小部件?
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()
调用。这是因为 AppWidgetProvider
是 BroadcastReceiver
的子 class,onUpdate()
由 onReceive()
触发,并且清单注册的 BroadcastReceiver
获得唯一每个 onReceive()
调用的实例。
我在 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()
调用。这是因为 AppWidgetProvider
是 BroadcastReceiver
的子 class,onUpdate()
由 onReceive()
触发,并且清单注册的 BroadcastReceiver
获得唯一每个 onReceive()
调用的实例。