gpt4 book ai didi

android - 即使我禁用了持久性,Firestore 仍在从缓存中检索文档

转载 作者:行者123 更新时间:2023-12-05 00:54:23 28 4
gpt4 key购买 nike

即使我明确告诉它不要,我的 Firestore 仍在从缓存中检索文档:

class MainActivity : AppCompatActivity() {

val db = FirebaseFirestore.getInstance()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val dbSettings = FirebaseFirestoreSettings.Builder().setPersistenceEnabled(false).build()
db.firestoreSettings = dbSettings

以上是我设置 Firestore 设置的启动器 Activity 。

在我的 fragment 中,我执行了 GeoFirestore GeoQuery :
class MapFragment : Fragment() {
val instances = FirebaseFirestore.getInstance().collection("instances")
val geoFirestore = GeoFirestore(instances)
lateinit var nearbyDocs: GeoQuery

private fun searchNearby(){
nearbyDocs = geoFirestore.queryAtLocation(currentLocation, 1.0)
nearbyDocs.addGeoQueryDataEventListener(object : GeoQueryDataEventListener {

override fun onDocumentEntered(documentSnapshot: DocumentSnapshot, location: GeoPoint) {
Log.d(TAG, "onDocumentEntered: user1: ${documentSnapshot.getString("user1")?.substring(0, 3)} | docId: ${documentSnapshot.id.substring(0, 5)} | fromCache: ${documentSnapshot.metadata.isFromCache}")
Log.d(TAG, "isPersistanceEnabled2: ${db.firestoreSettings.isPersistenceEnabled}")
}
}

这是它记录的内容:
onDocumentEntered: user1: 0X6 | docId: lPLFf | fromCache: true
isPersistanceEnabled2: false

这没有任何意义——即使我的持久性已关闭,我仍在接收缓存的文档。

知道问题是什么吗?

编辑 : 我试过清除缓存,但没有解决问题。

最佳答案

您现在可以选择是仅从服务器获取数据,还是仅从缓存中获取数据,如下所示(仅服务器示例):

DocumentReference documentReference= FirebaseFirestore.getInstance().document("example");
documentReference.get(Source.SERVER).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
//...
}
});

仅用于缓存,只需将上面的代码更改为 Source.CACHE。

默认情况下,这两种方法仍然尝试服务器并回退到缓存。

关于android - 即使我禁用了持久性,Firestore 仍在从缓存中检索文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57123208/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com