我已经设置了类似于example quickstart application的android firestore应用程序,换句话说:
EntryActivity
显示集合中的文档DetailsActivity
DetailsActivity
使用它自己的FirebaseFirestore
引用来读取具有ID的文档EntryActivity
和DetailsActivity
都通过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
为什么在第一个活动中从高速缓存中读取数据的速度更快?