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

Kotlin Android:如何用ApolloStore API修改规范化缓存并通知监听者?

在Kotlin Android中编辑Apollo GraphQL规范化缓存并通知监听者

要实现将Post:247的favorites计数递增1并触发监听通知,可以通过ApolloStore的update方法完成,以下是具体步骤和代码:

核心实现步骤

  • 获取ApolloStore实例(通常从已初始化的ApolloClient实例获取)
  • 通过update方法开启缓存事务,在事务内完成读取目标缓存项、修改字段、写回缓存的操作
  • 事务提交后,Apollo会自动通知所有监听该缓存项的查询或订阅

代码示例

// 假设已初始化ApolloClient实例
val apolloStore = apolloClient.apolloStore()

// 执行缓存更新操作
apolloStore.update { transaction ->
    // 1. 读取目标缓存记录,不存在则直接退出
    val postRecord = transaction.readRecord("Post:247") ?: return@update

    // 2. 安全读取并递增favorites计数
    val currentFavorites = postRecord.fields["favorites"] as? Int ?: 0
    val updatedFields = postRecord.fields.toMutableMap().apply {
        this["favorites"] = currentFavorites + 1
    }

    // 3. 创建更新后的记录并写回缓存
    val updatedRecord = postRecord.copy(fields = updatedFields)
    transaction.writeRecord(updatedRecord)
}

关键说明

  • update方法是原子操作,保障缓存修改的一致性
  • 事务内的读写操作线程安全,无需额外同步处理
  • 记录写回后,所有依赖该缓存项的活跃查询会自动收到更新通知,触发对应UI刷新
  • 若项目使用Apollo生成的强类型模型,也可结合readOperation和writeOperation基于模型类修改,但直接操作Record更适合这类单字段更新场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:15:39