【问题标题】:Will Firebase read from cached data if i turned off setPersistenceEnabled in my app update (android)如果我在我的应用更新 (android) 中关闭 setPersistenceEnabled,Firebase 会从缓存数据中读取吗
【发布时间】:2018-10-13 20:22:25
【问题描述】:

场景

我已经在 Play Store 上发布了我的应用程序

  1. Firebase 实时数据库
  2. 已为我的每个 Firebase 数据库设置了 setPersistenceEnabled(true)。

在跟踪崩溃数周后,我遇到了this 崩溃。

经过一番研究,我得出结论,Firebase 数据库的数据持久性缓存的数据不一致可能是导致这次崩溃的原因。

所以我通过调用FirebaseDatabase.getInstance().setPersistenceEnabled(false); 关闭了数据持久性 对于我所有的数据库。

通过上述代码更改,我在 Play 商店中发布了我的应用的更新。

但用户(在禁用持久性的新版本上)仍然遇到崩溃。

所以我的查询是

1) 即使在关闭持久性后,应用程序还会使用持久化数据吗?

2) 用户是否需要清除应用程序数据才能消除崩溃? (因为不一致/损坏的缓存数据是崩溃的原因)

以下是我的应用程序中与 firebase 数据库相关的 gradle 依赖项

compile 'com.google.firebase:firebase-database:12.0.1'
compile 'com.firebaseui:firebase-ui-database:3.3.0'

【问题讨论】:

    标签: android firebase firebase-realtime-database runloop


    【解决方案1】:

    以防其他人可能需要此信息。

    默认情况下,android 和 ios 应用程序启用了离线支持,但只有 内存中 可以处理间歇性连接。此缓存将在应用重新启动时丢失。

    调用 setPersistenceEnabled(true) 会将写入操作队列 also 持久保存到 disk(除了那些在内存中的),以使它们甚至可用在应用重新启动时。

    :见

    https://firebase.google.com/docs/reference/android/com/google/firebase/database/FirebaseDatabase#setPersistenceEnabled(boolean)

    https://firebase.google.com/docs/database/android/offline-capabilities#section-offline-behavior

    【讨论】:

      【解决方案2】:

      如果我关闭 setPersistenceEnabled,Firebase 会从缓存数据中读取吗?

      答案是否定的。一旦您使用以下代码行:

      FirebaseDatabase.getInstance().setPersistenceEnabled(false);
      

      这意味着您在离线时将无法查询您的数据库。此功能将被禁用。更清楚地说,每个使用 Firebase 数据库并使用 setPersistenceEnabled(false) 的客户端将维护其自己的内部(本地)数据库版本。

      但是,通过启用持久性,Firebase 实时数据库客户端在联机时将同步的任何数据都将持久保存到磁盘并且可以脱机使用,即使用户或操作系统重新启动应用程序也是如此。这意味着您的应用将使用存储在缓存中的本地数据像在线一样运行。

      【讨论】:

      • 一切都好吗?我可以帮助您了解其他信息吗?
      猜你喜欢
      • 2019-06-14
      • 2019-03-31
      • 1970-01-01
      • 2021-09-21
      • 2018-01-06
      • 1970-01-01
      • 2021-02-21
      • 2017-02-09
      • 2010-10-01
      相关资源
      最近更新 更多