首页 > 解决方案 > Firebase - 应用程序长时间无响应(因为数据同步?)

问题描述

我正在开发一个类似 RunKeeper 的应用程序。

当应用程序捕获了大量位置数据并且由于没有互联网连接而将所有数据保存在本地时,就会发生此问题。

长时间连接wifi,打开app,长时间显示处理图标。

    showProcessingIcon()

    userRef.observeSingleEvent(of: .value, with: { snapshot in
        //.... process and display data....

        hideProcessingIcon()    
    }) { (error) in
        //.... handle error....

        hideProcessingIcon()            
    }

有时处理图标会在一分钟左右后消失。有时我不得不在等待 5 分钟左右后退出应用程序,而处理图标仍在旋转。有时我注意到应用程序在等待处理完成时被卸载(手机在 1 分钟后自动锁定)。

知道如何避免这种情况吗?

谢谢。

标签: iosswiftfirebasefirebase-realtime-database

解决方案


Firebase SDK 在线时,您无法真正阻止数据同步。如果你有一个大的挂起写入,它将花费它需要花费的时间来完成,并且它会阻止其他写入直到它完成。

您可以做的是将数据收集到其他存储(本地文件或数据库)中,而不是使用 SDK 直接写入数据库。然后,您可以选择该数据最终写入实时数据库的时间(但仍需要同样长的时间才能完成)。


推荐阅读