Android 当从BroadcastReceiver调用setPersistenceEnabled(true)时,应用程序崩溃

Android 当从BroadcastReceiver调用setPersistenceEnabled(true)时,应用程序崩溃,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我正在使用此解决方案: public class FirebaseUtil { private static FirebaseDatabase mDatabase; public static FirebaseDatabase getDatabase() { if (mDatabase == null) { mDatabase = FirebaseDatabase.getInstance(); mDatabase.

我正在使用此解决方案:

public class FirebaseUtil {
    private static FirebaseDatabase mDatabase;

    public static FirebaseDatabase getDatabase() {
        if (mDatabase == null) {
            mDatabase = FirebaseDatabase.getInstance();
            mDatabase.setPersistenceEnabled(true);
        }
        return mDatabase;
    }
}
我的申请类别:

public class AnalyticsApplication extends Application { 
  private static GoogleAnalytics sAnalytics; 
  private static Tracker sTracker; 

  @Override public void onCreate() { 
    super.onCreate(); 
    sAnalytics = GoogleAnalytics.getInstance(this); 
  } 

  synchronized public Tracker getDefaultTracker() { 
    if (sTracker == null) { 
      sTracker = sAnalytics.newTracker(R.xml.global_tracker); 
    } 
    return sTracker; 
  } 
}
我有对数据库进行更改的通知。从广播接收器调用通知

问题是,当从应用程序调用getDatabase()时,它工作正常,但当从通知(不同线程)调用它时,它崩溃。当我注释
mDatabase.setPersistenceEnabled(true)时工作正常

为什么会发生这种情况?我可以修复它吗

更新:

例外情况如下:

java.lang.RuntimeException: 

at android.app.ActivityThread.handleReceiver (ActivityThread.java:3047)

at android.app.ActivityThread.-wrap18 (ActivityThread.java)

at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1561)

at android.os.Handler.dispatchMessage (Handler.java:102)

at android.os.Looper.loop (Looper.java:154)

at android.app.ActivityThread.main (ActivityThread.java:6119)

at java.lang.reflect.Method.invoke (Native Method)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:886)

at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: 

at     com.mycarservice.mycarservice.utils.DocumentDatabaseHandlerRemote.updateDocument (DocumentDatabaseHandlerRemote.java:48)

at com.mycarservice.mycarservice.utils.NotificationUtils.sendNotification (NotificationUtils.java:43)

at com.mycarservice.mycarservice.utils.DocumentReceiver.onReceive (DocumentReceiver.java:35)

at android.app.ActivityThread.handleReceiver (ActivityThread.java:3040)
我的想法是在收到通知时更新文档-在
DocumentReceiver.onReceive
(BroadcastReceiver)中,我调用
sendNotification()
,它调用
updateDocument()

mDatabase.setPersistenceEnabled(true)

由于必须在应用程序级别初始化firebase而导致崩溃

public class MApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        FirebaseDatabase.getInstance().setPersistenceEnabled(true);
    }
}
在manifest.xml中:

<application
    android:name=".MApplication"/>


希望它能帮助你

共享您的应用程序类。
public class analytics应用程序扩展应用程序{private static GoogleAnalytics sAnalytics;private static Tracker;@Override public void onCreate(){super.onCreate();sAnalytics=GoogleAnalytics.getInstance(this);}同步公共跟踪器getDefaultTracker(){if(sTracker==null){sTracker=sAnalytics.newTracker(R.xml.global_Tracker);}返回sTracker;}}
i发布解决方案。检查并让我知道它是否工作。请更新您的问题,以包括您得到的错误的完整堆栈跟踪。我包括堆栈跟踪。希望对你有帮助。请注意,当我不使用
setPersistenceEnabled(true)
时,它不会崩溃。我已经尝试过了,但应用程序在生产时经常崩溃。在本地,我无法重现错误,但google play控制台有许多崩溃报告。我现在尝试调用
FirebaseDatabase.getDatabase()在我的应用程序中
onCreate()
但它甚至在我收到通知之前就崩溃了。