我有一个使用.observeSingleEventOfType
和.Value
的功能,可以从Firebase的子树中检索数据。我现在面临的问题是,每次我手动删除Firebase中的子/数据以测试此函数的行为方式时,它总是在删除后调用时第一次加载旧数据。第一次之后,它会加载正确的数据。
我尝试使用.ChildAdded
和.observeEventType
,但行为没有改变。我现在Firebase.defaultConfig().persistenceEnabled
已设置为true
,我猜测问题是快照会从缓存中读取数据(如果可用),否则会检查Firebase数据库。
之前有人遇到过这类问题吗?
任何帮助都将受到高度赞赏。
更新:
我已经测试了启用和不启用持久性,结果证明我是正确的,当Firebase.defaultConfig().persistenceEnabled
将过去的所有数据缓存到内存中时,观察函数将首先尝试从内存加载然后转到Firebase。
当我设置Firebase.defaultConfig().persistenceEnabled = false
问题消失了。但是,我希望我的应用程序也可以脱机工作,这意味着我需要设置Firebase.defaultConfig().persistenceEnabled = true
是否有办法让所有观察函数缓存数据除了特定的那个?
解: 问题现在已解决,问题是当视图控制器被解除时我没有删除观察者。所以每当我再次进入视图时,另一个观察者会被调用,因此我总是会收到多个回调。