从缓存读取的Firestore应用无法正常工作

时间:2019-02-16 19:40:03

标签: android firebase google-cloud-firestore

我已经设置了类似于example quickstart application的android firestore应用程序,换句话说:

  • EntryActivity显示集合中的文档
  • 单击文档后,将文档ID传递到DetailsActivity
  • DetailsActivity使用它自己的FirebaseFirestore引用来读取具有ID的文档
  • EntryActivityDetailsActivity都通过FirebaseFirestore中的FirebaseFirestore.getInstance()获得了自己的onCreate引用

但是,由于以前打开过的文档是在EntryActivity中读取的,因此我希望DetailsActivity从本地缓存中读取的速度要比从DetailsActivity中读取的速度快服务器。

var time = System.currentTimeMillis() firestore.collection(collectionPath) .document(docId) .get(Source.CACHE) .addOnSuccessListener { snapshot -> time = System.currentTimeMillis() - time Log.v(TAG, "read took $time ms fromCache=${snapshot.metadata.isFromCache}") } 中,当从缓存中请求文档时:

read took 300-500 ms fromCache=true

结果:

var time = System.currentTimeMillis()
firestore.collection(collectionPath)
    .document(docId)
    .get(Source.SERVER)
    .addOnSuccessListener { snapshot ->
        time = System.currentTimeMillis() - time
        Log.v(TAG, "read took $time ms fromCache=${snapshot.metadata.isFromCache}")
    }

从服务器读取:

read took 300-500 ms fromCache=false

结果:

EntryActivity

这些运行了多次,以得出每次的平均时间。从缓存中读取数据时,速度没有明显差异。

为了进行实验,我尝试使用与上面相同的get(Source.CACHE)方法在read took 30-80 ms fromCache=true 中读取文档(已被读取之后),并且速度比预期的要快:

div

为什么在第一个活动中从高速缓存中读取数据的速度更快?

0 个答案:

没有答案