ios - Firebase - 应用程序长时间无响应(因为数据同步?)
问题描述
我正在开发一个类似 RunKeeper 的应用程序。
当应用程序捕获了大量位置数据并且由于没有互联网连接而将所有数据保存在本地时,就会发生此问题。
长时间连接wifi,打开app,长时间显示处理图标。
showProcessingIcon()
userRef.observeSingleEvent(of: .value, with: { snapshot in
//.... process and display data....
hideProcessingIcon()
}) { (error) in
//.... handle error....
hideProcessingIcon()
}
有时处理图标会在一分钟左右后消失。有时我不得不在等待 5 分钟左右后退出应用程序,而处理图标仍在旋转。有时我注意到应用程序在等待处理完成时被卸载(手机在 1 分钟后自动锁定)。
知道如何避免这种情况吗?
谢谢。
解决方案
Firebase SDK 在线时,您无法真正阻止数据同步。如果你有一个大的挂起写入,它将花费它需要花费的时间来完成,并且它会阻止其他写入直到它完成。
您可以做的是将数据收集到其他存储(本地文件或数据库)中,而不是使用 SDK 直接写入数据库。然后,您可以选择该数据最终写入实时数据库的时间(但仍需要同样长的时间才能完成)。
推荐阅读
- excel - Excel VBA 在某些情况下不会删除行
- php - 突出显示匹配的数据仅适用于匹配的单个值
- typescript - 我的导航按钮的“onPress”的正确返回类型是什么?
- sql - 链接 EKPO-EBELP 和总账科目
- batch-file - 如何让这个批处理过程正确使用用户输入?
- java - 结果集包含 int8 类型的列,但是 getInt 或 getByte 都无法获取列的值
- php - 从搜索 PhpStorm 中排除字符串
- python - 如何查找在特定数据上处于活动状态的所有 HTML 标签的列表
- ruby - 哪个是正确的 REPL 或命令行?
- json - RESTful 服务未将 json 正确映射到对象