【问题标题】:Firebase Database Persistence Bug in AndroidAndroid 中的 Firebase 数据库持久性错误
【发布时间】:2016-10-19 23:47:09
【问题描述】:

在过去 2 周里,我一直在彻底使用和测试我的 Android 应用。

我在我的应用中详尽地使用 Firebase 实时数据库,最重要的是,我的应用需要无缝离线工作

我有一个启动屏幕,我在启动和继续时同步特定用户节点的所有数据。

我肯定使用keepSynced(true);setPersistenceEnabled(true);

注意到一个严重的问题,这导致了很多问题。

场景 1

我是第一次使用互联网连接运行该应用,该应用运行良好。

场景 2

第一次在没有互联网连接的情况下运行该应用程序,没有任何效果。没有回调被触发。

场景 3

我在有/没有互联网连接的情况下连续运行该应用程序,它工作正常。

场景 4

但是,当我在 没有互联网连接 1 或 2 天后运行该应用程序时,没有任何效果。不会触发回调。

我似乎磁盘持久性被自动清除,这就是为什么数据无法离线使用并且没有触发回调的原因。

那么,如何控制何时清除磁盘持久性?有没有办法确保持久性永远不会被清除?有没有办法配置磁盘持久化的大小?

编辑

这就是我在应用程序类的onCreate() 中所做的。

private void initializeFirebaseDatabase() {
        if (!FirebaseApp.getApps(this).isEmpty()) {
            FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
            firebaseDatabase.setPersistenceEnabled(true);
        }
}

【问题讨论】:

  • 嗨 Artitra,你能解决你的问题吗?我在“com.google.firebase:firebase-database:9.2.0”中看到了类似的问题。由于很难重现这些问题,我不确定更新到最新版本是否可以解决它...
  • 此后我无法重现该问题。

标签: android firebase firebase-realtime-database


【解决方案1】:

【讨论】:

  • 在创建任何其他实例之前,我正在我的应用程序类中执行此操作。所以这个答案根本没有帮助。
  • 你有一个单独的类来扩展 android.app.Application,带有 FirebaseDatabase.getInstance().setPersistenceEnabled(true);在它的 onCreate 中?如果是,您是否使用 android:name="com.example.MyFirebaseApp" 将该类链接到您的应用程序?
  • 当然可以。而且 Firebase 也不允许在任何数据库初始化后调用 setPersistence() 方法。它会引发异常。
  • 您可以添加屏幕截图或您如何实现 setPersistence() 的代码吗?它可能有助于解决问题
  • 您是否在所有使用 Firebase 引用的 Activity 中调用 initializeFirebaseDatabase 方法?
【解决方案2】:

我遇到了同样的问题,在那里设置了启动画面 setPersistenceEnabled(true),但是当我调用 finish() 并尝试再次打开应用程序时出现错误。 解决了它杀死应用程序而不是调用finish()

我使用OnBackPressed() 来完成活动并使用Boolean isFinishing 标志来区分将应用程序发送到后台和终止它。

最后我在OnDestroy() 中杀死它:

android.os.Process.killProcess(android.os.Process.myPid());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 2020-01-19
    • 2017-10-08
    • 2018-12-01
    • 2019-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多