Android 使用firestore,是否可以将脱机持久性配置为设置';关闭';在特定的文档中?
我需要在Firestore中的某个文档中设置持久性;但所有其他文档都应使用默认配置实现。我已经执行了代码;但再次调用Android 使用firestore,是否可以将脱机持久性配置为设置';关闭';在特定的文档中?,android,firebase,kotlin,google-cloud-firestore,Android,Firebase,Kotlin,Google Cloud Firestore,我需要在Firestore中的某个文档中设置持久性;但所有其他文档都应使用默认配置实现。我已经执行了代码;但再次调用firestoreSettings会导致以下错误: java.lang.IllegalStateException:FirebaseFirestore已被删除 已启动,无法再更改其设置。你只能打电话 在调用上的任何其他方法之前,请执行setFirestoreSettings() FirebaseFirestore对象。 在com.google.firebase.firestore.
firestoreSettings
会导致以下错误:
java.lang.IllegalStateException:FirebaseFirestore已被删除
已启动,无法再更改其设置。你只能打电话
在调用上的任何其他方法之前,请执行setFirestoreSettings()
FirebaseFirestore对象。
在com.google.firebase.firestore.firebaseforestore.setFirestoreSettings上(com.google.firebase:firebase-firestore@@17.0.5:140)
如何为特定文档设置
setPersistenceEnabled=false
,或者是否可能?提前感谢。在执行任何其他操作之前,只能为整个Firestore客户端启用磁盘持久性。无法为特定集合、查询或文档启用/禁用磁盘持久性。在执行任何其他操作之前,只能为整个Firestore客户端启用磁盘持久性。无法为特定集合、查询或文档启用/禁用它。脱机持久化的工作方式是同步脱机时写入的每个文档的当前状态。它不会同步所有写入的整个历史记录。写操作的历史与此无关-重要的只是文档中的当前值。因此,启用持久性并不像您预期的那样昂贵
正如Frank所说,您不能选择性地选择只同步一些文档。要么完全关闭,要么打开。就个人而言,我认为您没有必要禁用它。脱机持久化的工作方式是同步脱机时编写的每个文档的当前状态。它不会同步所有写入的整个历史记录。写操作的历史与此无关-重要的只是文档中的当前值。因此,启用持久性并不像您预期的那样昂贵
正如Frank所说,您不能选择性地选择只同步一些文档。要么完全关闭,要么打开。就个人而言,我不认为您有必要禁用它。对于单个文档,您试图做什么需要禁用持久性?有一个文档用于实时跟踪驱动程序的位置。此文档有一个地质点字段。当驱动程序的internet连接脱机时,写入操作将被缓存,以便稍后与firestore同步。连接恢复并重新联机后,驾驶员可以发送不相关的旧地理点;因为应该在MapView上实时标记驱动程序。我认为,如果我可以选择一个文档来禁用持久性,那么所有累积的写入操作都不会一次发送。顺便说一下,我知道我只能在设备具有internet连接的情况下发送这些写入操作,而在设备连接离线的情况下忽略与firestore同步。firestore可以做这样的事情只是我的一个好奇。你想做什么,需要对单个文档禁用持久性?有一个文档用于实时跟踪驱动程序的位置。此文档有一个地质点字段。当驱动程序的internet连接脱机时,写入操作将被缓存,以便稍后与firestore同步。连接恢复并重新联机后,驾驶员可以发送不相关的旧地理点;因为应该在MapView上实时标记驱动程序。我认为,如果我可以选择一个文档来禁用持久性,那么所有累积的写入操作都不会一次发送。顺便说一下,我知道我只能在设备具有internet连接的情况下发送这些写入操作,而在设备连接离线的情况下忽略与firestore同步。firestore可以做这样的事情,这只是我的一个好奇。因此,如果我们有一个大的数据库(例如1-2GB),我们的web应用程序会将整个数据库下载到客户端的设备上,使其离线可用。对许多用户来说,这可能是过度的杀伤力。除了提示用户是否希望脱机使用数据(如果可能的话)之外,是否有其他最佳做法来解决此问题?只有您实际读取的文档将在本地持久化,但除此之外,您无法控制磁盘缓存。因此,如果我们有一个较大的数据库(例如1-2GB),我们的web应用程序会将整个数据库下载到客户端的设备上,使其脱机可用。对许多用户来说,这可能是过度的杀伤力。除了提示(如果可能的话)用户是否希望脱机使用数据之外,是否还有其他最佳做法来解决此问题?只有您实际读取的文档将在本地持久化,但除此之外,您无法控制磁盘缓存。道格:在我的情况下,我知道这不是正确的用例,但是我有需要投入生产的代码,所以我禁用了持久性,作为解决慢速查询问题()的一种方法。理想情况下,只有一个活动需要解决方案。所以我的问题是:有没有其他解决慢查询问题的方法?@doug stevenson一种情况可能是,如果我在某个集合中存储一些关键信息(账单、付款、密钥等)。doug:在我的情况下,我知道这不是正确的使用情况,但是我有需要投入生产的代码,所以我禁用了持久性,作为解决慢速查询问题()的一种方法。理想情况下,只有一个活动需要解决方案。所以我的问题是:对于慢查询问题,还有其他解决方案吗?@doug stevenson一个例子是,如果我在某个集合中存储一些关键信息(账单、付款、密钥等)。