You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Glance AppWidget:用户添加至屏幕时如何更新内容?

Glance小组件添加到屏幕时触发更新的正确事件方案

针对你遇到的GlanceAppWidgetReceiver的onEnabled未触发,且需要在用户添加小组件到屏幕时自动更新的问题,给你两个可靠的解决思路:

1. 单个小组件实例添加时触发更新:重写onAppWidgetAdded

这个方法会在每一个小组件实例被添加到屏幕时触发,适合需要针对单个实例刷新的场景,直接在方法内调用小组件的更新接口即可:

class YourGlanceReceiver : GlanceAppWidgetReceiver() {
    override val glanceAppWidget: GlanceAppWidget = YourGlanceWidget()

    override fun onAppWidgetAdded(context: Context, appWidgetId: Int) {
        super.onAppWidgetAdded(context, appWidgetId)
        // 刷新当前被添加的小组件实例
        glanceAppWidget.update(context, GlanceId(appWidgetId))
    }
}

2. 第一个小组件实例添加时执行全局更新:修复onEnabled的使用

onEnabled的触发时机是第一个小组件实例被添加到设备时(后续添加同类型小组件不会再触发),如果你的onEnabled没触发,先检查两点:

  • 确认GlanceAppWidgetReceiver已在Manifest中正确注册
  • 确保调用了super.onEnabled(context)

修复后可以在这个方法里做全局初始化逻辑,同时刷新所有已添加的小组件:

override fun onEnabled(context: Context) {
    super.onEnabled(context)
    // 这里可以执行全局初始化操作,比如预加载数据
    // 刷新所有已添加的同类型小组件
    glanceAppWidget.updateAll(context)
}

关键注意点

  • 确保你的GlanceAppWidget实现类中,provideGlanceContent方法使用的是最新数据(比如从本地存储或ViewModel获取),否则调用update也不会看到UI变化
  • 如果是多实例小组件,优先用onAppWidgetAdded来保证每个添加的实例都能及时刷新

内容的提问来源于stack exchange,提问作者Foenix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:47:46