GlanceAppWidget UI渲染更新异常问题求助
GlanceAppWidget UI渲染更新异常问题求助
大家好,我最近在开发一款带GlanceAppWidget的Android应用,用来展示笔记信息。我的需求很明确:让widget显示当前选中的笔记ID,点击按钮后更新这个ID,并且让widget的UI同步刷新显示新的ID。
但现在遇到了问题——点击按钮后,widget的UI完全没变化,控制台打印的noteId还是旧值。我猜是更新ID的逻辑和widget状态刷新的衔接出了问题,先贴出我的部分代码,麻烦各位大佬帮忙看看:
NotesWidget 类代码
class NotesWidget : GlanceAppWidget() { override val stateDefinition = PreferencesGlanceStateDefinition override suspend fun provideGlance(context: Context, id: GlanceId) { provideContent { GlanceTheme { val prefs = currentState<Preferences>() val noteId = prefs[intPreferencesKey("widgetNoteId")] Button( text = noteId.toString(), onClick = actionStartActivity<NotesWidgetActivity>() ) println("Selected Note id $noteId") } } } }
NotesWidgetActivity 类(部分代码)
class NotesWidgetActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 这里原本打算处理笔记ID更新逻辑,比如选择新笔记后更新SharedPreferences里的值 // 但目前就算更新了prefs,widget的UI也没跟着变化 ... } }
我现在有几个疑问:
- 是不是更新SharedPreferences后,没有正确通知GlanceWidget刷新状态?
- 触发GlanceWidget重新渲染UI的正确方式是什么?
- 我的
stateDefinition使用有没有问题?
希望有经验的朋友能帮忙排查下问题,或者给我指个调整方向,让点击按钮更新ID后,widget的UI能同步显示新的ID。
备注:内容来源于stack exchange,提问作者Kin
相关产品推荐
相关产品推荐

