Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使apollo android缓存失效?_Android_Kotlin_Graphql_Apollo Android - Fatal编程技术网

如何使apollo android缓存失效?

如何使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

这是我的apollo客户端缓存代码

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