Android - 每个查询的阿波罗客户端响应提取器不起作用

问题描述

在我的 android 应用中,只有少数请求可以与 CACHE_FirsT 一起使用,一旦获取,它就可以终生使用。对于其他请求,我更喜欢使用 NETWORK_ONLY

所以我将 defaultResponseFetcher 设置为 NETWORK_ONLY

val cacheFactory = LrunormalizedCacheFactory(evictionPolicy.builder().maxSizeBytes(10 * 1024 * 1024).build())
val apolloClient = ApolloClient.builder()
                   .serverUrl("https://...")
                   .defaultResponseFetcher(ApolloResponseFetchers.NETWORK_ONLY)
                   .normalizedCache(cacheFactory)
                   .build()

对于我知道的查询,它不会随着时间的推移而改变,我明确指定了 dataFetcher,如下所示。

apolloClient.query(ReturnsSameQuery(itemId))
                    .responseFetcher(ApolloResponseFetchers.CACHE_FirsT)
                    .toDeferred().await()

我的期望是,为少数请求设置 CACHE_FirsT 将确保只缓存合适的候选者。因此,在缓存中留出更多空间,其他请求将始终返回最新数据,而无需缓存。

这里的实际问题:

但我看到每个请求的 responseFetcher 没有效果,这些 每次从网络获取 ReturnsSameQuery 项。

**另一种失败的方法** 如果我将 defaultResponseFetcher 设置为 CACHE_AND_NETWORK,它会缓存每个请求并从缓存中返回。这将是一个开销,因为大多数请求根本不需要缓存。这将影响应用程序的整体健全性。

此外,为每个 API 调用指定 responseFetcher 将需要对每个 API 再次进行测试。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)