android - Firebase 离线同步问题
问题描述
我最近才开始学习 Kotlin 和使用 Firebase。我只是对离线同步功能有一些疑问。对于上下文,我制作的应用程序提交信息形式(主要是布尔值,但我希望将来也有图像)。我已经完成了离线部分的设置并且已经玩过了。我只是想知道:
- 如果我在同步“队列”中仍有离线表单时关闭应用程序会发生什么。
- 这个同步队列有限制吗?例如大小、表格数量。特别是 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()
}
}
谢谢。
解决方案
默认情况下,Firebase 仅将挂起的写入保留在内存中。在该配置中,当应用程序关闭时,任何挂起的写入都会丢失。
如果启用磁盘持久性,挂起的写入(连同最近接收的数据)将持久化到磁盘。在这种情况下,挂起的写入会在应用程序重新启动时恢复到内存中。
对于挂起的写入数量没有记录或硬编码的限制。可能有一个物理限制,但它不受您所参加的计划的影响。
最后一点:如果您问这个是因为您想将 Firebase 用作半永久性离线数据库,我建议您不要这样做。挂起的写入次数线性影响启动性能,磁盘缓存的大小也会影响内存消耗。您应该确保您的 Firebase 客户端可以定期与服务器同步数据。对于纯粹的离线体验,您可能需要考虑更适合该用例的数据库。
推荐阅读
- reactjs - 如何在material-ui makestyles上应用打字稿自动完成类型
- java - 与休眠 5.4 兼容的弹簧芯
- php-7.4 - Illuminate\Contracts\Container\BindingResolutionException 目标类 [FeaturesController] 不存在。在 Laravel 42.8 和 php 7.4
- python - Python,强制像素值在 [0,1] 范围内
- php - WordPress 自定义用户角色的问题 - 没有权限
- django - 根据另一个字段中的选择动态填充一个 Django 表单字段
- html - 有没有办法在没有 JS 的情况下以不同的方式设置本地和全局链接的样式?
- signal-processing - 使用 1 个 SDR 源创建 3 个 ZMQ PUB
- reactjs - Framer Motion中退出动画的不同过渡
- python - 只能合并 Series 或 DataFrame 对象,一个
通过了