У меня настроено приложение для Android Firestore, аналогичное примеру быстрого приложения , другими словами:
EntryActivity
отображает документы в коллекции - При щелчке по документу передайте идентификатор документа в
DetailsActivity
DetailsActivity
, используя собственную ссылку FirebaseFirestore
, чтобы прочитать этот документ с идентификатором - И
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
Почему чтение из кэша только быстрее в первом действии?