Firebase离线同步问题

时间:2020-06-09 13:48:02

标签: android firebase kotlin firebase-realtime-database

我直到最近才开始学习Kotlin和使用Firebase。我只是对离线同步功能有几个问题。对于上下文,我制作的应用程序提交了各种形式的信息(主要是布尔值,但我也希望将来有图像)。我已经设置了离线零件并进行了尝试。我只是想知道:

  1. 如果在同步“队列”中仍然存在脱机表单时关闭应用程序会发生什么情况。
  2. 此同步队列是否有限制?例如大小,表格数量。尤其是针对Firebase实时数据库的免费计划。

这是我编写的用于进行离线同步的代码(用于setOnClickListener的“私人乐趣”:

        val ref = FirebaseDatabase.getInstance().getReference("Inspections")

        ref.keepSynced(true)

        val fdbTubingId = ref.push().key

        val inspec = Inspection(ds, fdbTubingId.toString(), uniqueID, fac, ss, tid, fType,
                              Q1Aa, Q1Bb, Q1Cc, Q1CComment,
                              Q2Aa, Q2Bb, Q2Cc, Q2Dd, Q2CComment,
                              Q3Aa, Q3Bb, Q3CAa, Q3CBb, Q3CCc, Q3CComment,
                              Q4Aa, Q4Bb, Q4Cc, Q4Dd, Q4CComment,
                              Q5Aa, Q5Bb, Q5CComment,
                              Q6Aa, Q6CComment)

        if (fdbTubingId != null) {
            ref.child(fdbTubingId).setValue(inspec).addOnCompleteListener {
                Toast.makeText(applicationContext, "Inspection saved successfully", Toast.LENGTH_LONG).show()
            }
        }

谢谢。

1 个答案:

答案 0 :(得分:0)

Firebase默认情况下仅将挂起的写入保留在内存中。在这种配置下,关闭应用程序后,所有挂起的写操作都会丢失。

如果启用磁盘持久性,则挂起的写操作(以及最近接收到的数据)将持久化到磁盘。在这种情况下,重新启动应用程序时,挂起的写操作会还原到内存中。

对未决写入次数没有记录或硬编码限制。可能会有身体上的限制,但不受您所执行计划的影响。


最后一点:如果您因为要使用Firebase作为半永久性脱机数据库而提出此问题,建议不要这样做。暂挂写入的数量线性影响启动性能,磁盘缓存的大小也影响内存消耗。您应该真正确保Firebase客户端可以定期将数据与服务器同步。为了获得纯脱机体验,您可能需要考虑更适合该用例的数据库。

相关问题