随着 Android 10 的发布,一些小部件(Gmail、Google 新闻、三星电子邮件)现在会在切换深色模式时更新其主题。我正在尝试复制这种行为。我有一个带有 AppWidgetProvider 和 RemoteViewsFactory 的列表视图小部件。但是,当切换暗模式时,ListView 项目切换到暗主题,而不是布局本身:
暗模式关闭:
暗模式开启:
在我的代码中,我在 AppWidgetProvider 的 OnUpdate() 方法中设置布局:
override fun onUpdate(
context: Context,
appWidgetManager: AppWidgetManager?,
appWidgetIds: IntArray?
) {
Log.d(TAG, "Updating Transaction Widget")
GlobalScope.launch(Dispatchers.IO ) {
updateTransactionTable(context)
for (i in appWidgetIds!!.indices) {
val layout: RemoteViews = buildLayout(context, appWidgetIds[i])
appWidgetManager!!.updateAppWidget(appWidgetIds[i], layout)
}
super.onUpdate(context, appWidgetManager, appWidgetIds)
}
}
切换暗模式时不会调用 onUpdate。但是,当切换暗模式时,我似乎找不到在 AppWidgetProvider 中调用的任何方法,因此我不确定在哪里调用新的布局构建,甚至不确定何时需要进行更改。
任何帮助将非常感激。