我直到最近才开始学习Kotlin和使用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()
}
}
谢谢。
答案 0 :(得分:0)
Firebase默认情况下仅将挂起的写入保留在内存中。在这种配置下,关闭应用程序后,所有挂起的写操作都会丢失。
如果启用磁盘持久性,则挂起的写操作(以及最近接收到的数据)将持久化到磁盘。在这种情况下,重新启动应用程序时,挂起的写操作会还原到内存中。
对未决写入次数没有记录或硬编码限制。可能会有身体上的限制,但不受您所执行计划的影响。
最后一点:如果您因为要使用Firebase作为半永久性脱机数据库而提出此问题,建议不要这样做。暂挂写入的数量线性影响启动性能,磁盘缓存的大小也影响内存消耗。您应该真正确保Firebase客户端可以定期将数据与服务器同步。为了获得纯脱机体验,您可能需要考虑更适合该用例的数据库。