Я использую это решение:
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;
}
}
У меня есть уведомления, которые вносят изменения в базу данных. Уведомления вызываются из BroadcastReceiver.
Проблема в том, что при вызове getDatabase () из приложения он работает нормально, но при вызове из уведомления (из другого потока) происходит сбой. Когда я комментирую mDatabase.setPersistenceEnabled(true);
, он работает нормально.
Почему это происходит и я могу это исправить?
UPDATE:
Вот исключение:
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()
.