NetworkBoundResource:为什么在“ ApiEmptyResponse”中使用“ loadFromDb()”

我在NetworkBoundResource.kt源代码中看到了来自Architecture-components-samples的90-97行:

                is ApiEmptyResponse -> {
                    appExecutors.mainThread().execute {
                        // reload from disk whatever we had
                        result.addSource(loadFromDb()) { newData ->
                            setvalue(Resource.success(newData))
                        }
                    }
                }

任何人都知道为什么在ApiEmptyResponse情况下,它会重新加载数据库并尝试分派新的数据库源,而不使用函数参数{{1}中传递的“最新” dbSource },就像private fun fetchFromNetwork(dbSource: LiveData<ResultType>) {...}场景一样。

liuben1205 回答:NetworkBoundResource:为什么在“ ApiEmptyResponse”中使用“ loadFromDb()”

他在顶部的评论中对其进行了描述

  

从磁盘中重新加载我们拥有的

这用于确保您重新加载拥有的最新数据,并确保通知实时数据。 如果去重新检查代码,您会发现一条注释:

  

//我们特别要求提供新的实时数据,
  // //否则我们将立即获得上一个缓存的值,
  //可能不会使用从网络收到的最新结果进行更新。

本文链接:https://www.f2er.com/3169437.html

大家都在问