我正在开发类似RunKeeper的应用程序。
当应用捕获了很多位置数据,并且所有数据由于没有互联网连接而保存在本地时,就会发生此问题。
长时间连接到wifi并打开应用程序时,它会长时间显示处理图标。
showProcessingIcon()
userRef.observeSingleEvent(of: .value, with: { snapshot in
//.... process and display data....
hideProcessingIcon()
}) { (error) in
//.... handle error....
hideProcessingIcon()
}
有时,处理图标在大约一分钟后消失。有时我必须等待5分钟左右才能退出应用程序,并且处理图标仍在旋转。有时,我在等待处理完成时注意到应用程序已卸载(1分钟后电话自动锁定)。
有什么办法避免这种情况吗?
谢谢。
答案 0 :(得分:1)
当Firebase SDK联机时,您无法真正阻止数据同步。如果您有大量待处理的写操作,则需要花费很长时间才能完成,并且将阻止其他写操作,直到完成为止。
您可以做的是将数据收集到其他一些存储区(本地文件或数据库)中,而不是使用SDK直接写入数据库中。然后,您可以选择何时将这些数据最终写入Realtime Database(但仍然需要很长时间才能完成)。