离线Firebase数据库无法正常工作

时间:2018-05-03 06:17:16

标签: android firebase firebase-realtime-database persistence

  

我希望我的应用程序在本地脱机保存数据。每当我重新打开应用程序时他们不是互联网。它应该工作

在onCreate of Application我打电话

FirebaseDatabase.getInstance().setPersistenceEnabled(true);
只要应用程序在启用互联网时启动,

离线capablilites即可正常运行。如果我关闭应用并重新启动,则数据不会同步

也尝试了

keepSynched(true);

但只要你杀了应用程序。 它失去了连接,没有可用的离线数据。如何在android中执行持久性数据

2 个答案:

答案 0 :(得分:2)

您必须在希望将检索到的数据存储在本地的每个位置调用FirebaseDatabase.getInstance().setPersistenceEnabled(true);。因此,您应该创建一个这样的帮助器类:

import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class FirebaseUtils {
    private static DatabaseReference mDatabaseRef;
    private static FirebaseDatabase database;
    public static DatabaseReference getDatabaseRef() {
        if (mDatabaseRef == null) {
            getDatabase();
            mDatabaseRef = database.getReference();
            // ...
        }
        return mDatabaseRef;
    }

    public static FirebaseDatabase getDatabase() {
        if (database == null) {
            database = FirebaseDatabase.getInstance();
            database.setPersistenceEnabled(true);
            // ...
        }
        return database;
    }
}

然后,在您的活动和片段以及您想要执行数据库工作的其他位置,您可以像这样初始化DatabaseReference对象:

private DatabaseReference mDatabase;
private DatabaseReference mPlaceRef;

....

mDatabase = FirebaseUtils.getDatabaseRef();
mPlaceRef = mDatabase .child("places");

...

答案 1 :(得分:0)

FirebaseDatabase.getInstance().setPersistenceEnabled(true) 只应在应用启动或初始化期间调用一次。

我在 iOS 上测试过,它运行良好,但在 android 中它不起作用。