如何使apollo android缓存失效?
这是我的apollo客户端缓存代码如何使apollo android缓存失效?,android,kotlin,graphql,apollo-android,Android,Kotlin,Graphql,Apollo Android,这是我的apollo客户端缓存代码 val apolloSqlHelper = ApolloSqlHelper.create(context,"my_app") val sqlNormalizedCacheFactory = SqlNormalizedCacheFactory(apolloSqlHelper) val cacheKeyResolver = object: CacheKeyResolver(){ override fun fr
val apolloSqlHelper = ApolloSqlHelper.create(context,"my_app")
val sqlNormalizedCacheFactory = SqlNormalizedCacheFactory(apolloSqlHelper)
val cacheKeyResolver = object: CacheKeyResolver(){
override fun fromFieldRecordSet(
field: ResponseField,
recordSet: MutableMap<String, Any>
): CacheKey {
return if (recordSet["__typename"] == "Repository") {
CacheKey.from(recordSet["id"] as String)
} else {
CacheKey.NO_KEY
}
}
override fun fromFieldArguments(
field: ResponseField,
variables: Operation.Variables
): CacheKey {
return CacheKey.NO_KEY
}
}
ApolloClient.builder().serverUrl(baseUrl)
.normalizedCache(sqlNormalizedCacheFactory,cacheKeyResolver)
.okHttpClient(okHttpClient).build()
val apolloSqlHelper=apolloSqlHelper.create(上下文,“我的应用程序”)
val sqlNormalizedCacheFactory=sqlNormalizedCacheFactory(SQLHelper)
val cachekeyrolver=对象:cachekeyrolver(){
重写字段记录集(
字段:ResponseField,
记录集:可变映射
):CacheKey{
返回if(记录集[“\uu typename”]=“存储库”){
CacheKey.from(记录集[“id”]作为字符串)
}否则{
CacheKey.NO_KEY
}
}
重写字段参数(
字段:ResponseField,
变量:操作。变量
):CacheKey{
返回CacheKey.NO_键
}
}
ApolloClient.builder().serverUrl(baseUrl)
.normalizedCache(sqlNormalizedCacheFactory、cacheKeyResolver)
.okHttpClient(okHttpClient.build())
我正在执行一个查询,之后apollo将缓存我的结果,但当更多数据添加到查询中时,我不知道如何根据结果是否已更改而使缓存无效。如果没有更改结果,则从缓存获取数据或获取新数据并更新缓存我不需要手动使缓存无效。阿波罗机器人帮我处理 这个代码对我有用
apolloClient.query(MyQuery()).responseFetcher(ApolloResponseFetchers.NETWORK_FIRST)
ApolloResponseFetchers
还提供各种选项,如先缓存
,仅缓存
等我不需要手动使缓存无效。阿波罗机器人帮我处理
这个代码对我有用
apolloClient.query(MyQuery()).responseFetcher(ApolloResponseFetchers.NETWORK_FIRST)
ApolloResponseFetchers
还提供各种选项,如CACHE\u FIRST
,CACHE\u ONLY
等