如何实时更新glance小部件?

问题描述 投票:0回答:1

是否可以使用

live update
jetpack 来制作
Widget
Glance
的数据?就像在数据库发生变化时更新数据一样。例如,当我使用
flow
时,流程应该能够更新小部件数据,对吗?

我们可以更新点击操作,例如:

class MyWidgetActions: ActionCallback {


    override suspend fun onRun(context: Context, glanceId: GlanceId, parameters: ActionParameters) {
                updateAppWidgetState(context, PreferencesGlanceStateDefinition, glanceId) {
                it.toMutablePreferences()
                     .apply {
                       ...
                       //toDoSomething()
                       ... 
                    }
                }
                MyWidget().update(context, glanceId)
             ...
    }

我们可以在不点击数据流的情况下进行更新吗?

android android-widget android-jetpack-compose glance-appwidget glance
1个回答
1
投票

更新:自Glance beta01开始,支持重组。因此,您现在可以使用流/实时数据并在可组合项中运行副作用。尽管这些只有在您的进程处于活动状态时才会处于活动状态。

以下已过时:

您可以使用其中一种更新方法从应用程序的任何位置更新小部件实例,但您无法订阅或观察小部件内容/可组合方法内的任何流/实时数据。

尽管这意味着您的应用程序必须正在运行,因此您需要运行一个服务。我们不建议不断更新“实时”小部件,因为这可能会导致电池耗尽。

而是使用 WorkManager 来安排定期更新。

© www.soinside.com 2019 - 2024. All rights reserved.