Android Firebase磁盘持久性错误:必须在使用配置对象之前对其进行修改

Android Firebase磁盘持久性错误:必须在使用配置对象之前对其进行修改,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在使用Firebase作为后端开发一个应用程序。我正在尝试实现Firebase提供的磁盘持久性,但当我重新启动应用程序时,我的应用程序崩溃。文档中说写Firebase.getDefaultConfig().setPersistenceEnabled(true)要在任何Firebase引用之前写,我这样做了,但不起作用 以下是我的部分代码: @Override protected void onCreate(Bundle savedInstanceState) { su

我正在使用Firebase作为后端开发一个应用程序。我正在尝试实现Firebase提供的磁盘持久性,但当我重新启动应用程序时,我的应用程序崩溃。文档中说写
Firebase.getDefaultConfig().setPersistenceEnabled(true)
要在任何Firebase引用之前写,我这样做了,但不起作用

以下是我的部分代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Firebase.setAndroidContext(this);
        firebase.getDefaultConfig().setPersistenceEnabled(true);
        firebase = new Firebase(getString(R.string.firebase_url));

        setContentView(R.layout.activity_main);
        //remaining code
}
日志输出:

Caused by: com.firebase.client.FirebaseException: Modifications to Config objects must occur before they are in use
        at com.firebase.client.core.Context.assertUnfrozen(Context.java:124)
        at com.firebase.client.Config.setPersistenceEnabled(Config.java:155)
        at activity.MainActivity.onCreate(MainActivity.java:148)
        at android.app.Activity.performCreate(Activity.java:5984)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2256)

明白了!问题是
Firebase.setAndroidContext(这个)
Firebase.getDefaultConfig().setPersistenceEnabled(true)


因此,上述两条语句将包含在应用程序java文件的onCreate()中,而不是包含在活动java文件中。此外,在创建任何firebase对象之前,还应包含它们。这解决了问题:)。

我也遇到了类似的问题,最终解决了问题,只需检查
isPersistenceEnabled
是否为false,然后只设置持久性。在您的
onCreate
方法上执行此操作

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);
    if (Firebase.getDefaultConfig().isPersistenceEnabled() == false)
        Firebase.getDefaultConfig().setPersistenceEnabled(true);
    Firebase.setAndroidContext(this);

}

在setAndroidContext()之前调用setPersistenceEnabled()。它不起作用。我试图找出一条线索:当应用程序没有进入缓存时,重启应用程序不会使应用程序崩溃。因此,我手动清除了缓存,应用程序运行正常。但这不是正确的解决方案。还有其他想法吗???这很有效,您的示例应用()帮助我解决了问题:)。应用程序java文件是类应用程序的子级。这意味着您必须创建一个扩展应用程序类的类。然后在onCreate()中包含Firebase.getDefaultConfig().setPersistenceEnabled(true)语句。不要忘记执行清单条目。此外,在进行任何引用初始化之前,应该添加它。这正是我所寻找的!谢谢@Surendra