Firebase离线同步问题

问题描述 投票:0回答:1

我最近才开始学习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()
            }
        }

谢谢。

android firebase kotlin
1个回答
0
投票

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

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

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


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

© www.soinside.com 2019 - 2024. All rights reserved.