android - 如果我在我的应用更新 (android) 中关闭 setPersistenceEnabled,Firebase 会从缓存数据中读取吗
问题描述
设想
我已经在 Play Store 上发布了我的应用程序,它使用
- Firebase 实时数据库
- 为我的每个 Firebase 数据库设置了 setPersistenceEnabled(true)。
在跟踪崩溃几周后,我遇到了这个崩溃。
经过一番研究,我得出结论,Firebase 数据库的数据持久性缓存的数据不一致可能是导致此崩溃的原因。
FirebaseDatabase.getInstance().setPersistenceEnabled(false);
所以我通过调用我所有的数据库来关闭数据持久性。
通过上述代码更改,我在 Play Store 上发布了我的应用程序的更新。
但是用户(在禁用持久性的新版本上)仍然会崩溃。
所以我的查询是
1) 即使关闭持久性,应用程序是否仍会使用持久化数据?
2)用户是否需要清除应用程序数据才能消除崩溃?(因为不一致/损坏的缓存数据是崩溃的原因)
以下是我的应用程序中与 firebase 数据库相关的 gradle 依赖项
compile 'com.google.firebase:firebase-database:12.0.1'
compile 'com.firebaseui:firebase-ui-database:3.3.0'
解决方案
如果我关闭 setPersistenceEnabled,Firebase 会从缓存数据中读取吗?
答案是不。使用以下代码行后:
FirebaseDatabase.getInstance().setPersistenceEnabled(false);
这意味着您在离线时将无法查询数据库。此功能将被禁用。更清楚地说,每个使用 Firebase 数据库并使用 setPersistenceEnabled(false) 的客户端都不会维护它自己的内部(本地)版本的数据库。
但是,通过启用持久性,Firebase 实时数据库客户端在联机时将同步的任何数据都将持久保存到磁盘并且可以脱机使用,即使用户或操作系统重新启动应用程序也是如此。这意味着您的应用程序将使用存储在缓存中的本地数据像在线一样工作。
推荐阅读
- css - 图像在移动设备上拉伸(仅限 iPhone),但在 PC 上的浏览器预览中没有
- google-apps-script - GmailApp.getMessagesForThreads() 返回太多消息
- r - 根据 r 中的某些列将 2 个表连接在一起
- python - 使用 python 发送文件和元数据的未编码多部分/表单数据 POST 请求
- c# - 动态生成控件
- .net - .NET 将一些内容从一个 XML 粘贴到另一个 XML 文件
- mysql - 1and1 IONOS 数据库与 Node.JS
- c# - Unity Editor 在点击播放时冻结几秒钟 - Firebase.Editor 错误
- qt - 如何在 qml 中设计标尺
- outlook-redemption - 通过 RDOmessage.saveas 将 Msg 转换为 Eml 显示韩文的文本损坏