Android中的Firebase数据库持久性错误

时间:2016-06-18 04:58:53

标签: android firebase firebase-realtime-database

过去两周我一直在彻底使用和测试我的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);
        }
}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

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

我使用OnBackPressed()完成活动和Boolean isFinishing标记,以区分将应用程序发送到后台并将其删除。

最后我用OnDestroy()将其杀死:

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