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

Jetpack Compose:如何跨页面更新所有列表中的元素?

跨页面Post数据同步实现思路(Apollo GraphQL + MVVM + Clean架构)
  • Apollo缓存主动更新
    在页面1执行Post更新的GraphQL mutation时,通过Apollo的update配置手动更新本地缓存中目标ID的Post数据。由于Apollo缓存是全局共享的,页面2的列表查询如果基于缓存,会自动感知到数据变化并触发UI更新。
  • 全局事件驱动刷新
    在Clean架构的Domain层实现一个全局事件发布器(如Flow、LiveData),当页面1完成Post更新并同步到数据库后,发布携带目标Post ID的更新事件。页面2的ViewModel订阅该事件,收到通知后从数据库或Apollo缓存拉取最新数据,更新本地列表状态。
  • 结合页面生命周期与saveState适配
    因Navigation设置了saveState = true,页面2的ViewModel不会重复初始化,可在页面恢复可见性(如onResume)时,结合上述事件通知触发数据校验;或直接使用Apollo的watch方法监听列表查询,缓存更新时自动获取新数据并同步UI。
  • Clean架构职责落地
    • Data层:处理Apollo缓存更新、数据库同步逻辑,同时提供缓存变化的监听能力。
    • Domain层:封装事件发布逻辑,仅传递必要的更新标识(如Post ID),避免耦合UI细节。
    • Presentation层:ViewModel订阅事件或缓存变化,更新UI状态;页面仅负责观察ViewModel状态并刷新列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:24:28