Android - Firebase离线最佳做法

Cha*_*har 14 android firebase firebase-realtime-database

我坚持理解使Firebase应用程序脱机的概念.根据文档,我们需要调用:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);
Run Code Online (Sandbox Code Playgroud)

但是我们应该在哪里打电话呢?应该在应用程序的每个活动中使用它吗?因为,当我在我的Application类onCreate()方法中使用它时,我的应用程序不断崩溃.

那么,为了让我们的应用离线,我们应该遵循的最佳做法是什么.

另一个疑问是上述和之间的区别 DatabaseReference.keppSynced(true);

Jin*_*aul 15

创建一个应用程序类

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);

    }
}
Run Code Online (Sandbox Code Playgroud)

并将你的清单改为

<application
    android:name=".MyApp"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
Run Code Online (Sandbox Code Playgroud)

  • 仅在需要firebase数据库的脱机属性时才使用此选项.也就是说,如果您处于离线状态,那么当您在线时它将显示上次获取的值,如果您在离线时将某些内容推送到数据库,这有助于在您再次上线时推送它 (3认同)

Chr*_*way 9

setPersistenceEnabled()应该在启动之前调用一次,然后再检索数据库的第一个引用.我打电话后直接打电话给我FIRApp.configure()

启用持久性允许完全脱机保留信息.这一点的重要组成部分是,即使您强制关闭应用程序并重新打开它,也会完成脱机请求和更新.如果您正在寻找要设置的布尔值的离线访问.

如果您希望在检索信息时缓存最新数据的情况,则使用保持同步,但下次打开应用程序时不一定需要恢复该数据.

一个很好的使用示例是,如果您有访问登录用户详细信息的视图.您可以指定保持该数据库引用同步,并且可以更快地获取最新数据,而不是在使用详细信息的所有视图上都有用户详细信息侦听器.

有关持久性和同步的更多详细信息,请参阅Firebase文档:https://firebase.google.com/docs/database/android/offline-capabilities