2017-11-18 2 views
0

verbrachte wie 3 Stunden Suche die Lösung, konnte aber nicht.Firebase-Referenz im Hintergrund Service ist nicht festgelegtPersistenceEnabled

Ich benutze Firebase-Datenbank und wann immer ich es aus Aktivität/Fragment alles funktioniert, aber jedes Mal, wenn ich es aus dem Hintergrund-Service verwenden, crashed die App, obwohl ich initiiere es (und setPersistent erst aktivieren) vor der Verwendung .

Fehler

E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: dreamchasers.com.coinpal, PID: 8565 
                    com.google.firebase.database.DatabaseException: Calls to setPersistenceEnabled() must be made before any other usage of FirebaseDatabase instance. 
                     at com.google.firebase.database.FirebaseDatabase.zziF(Unknown Source) 
                     at com.google.firebase.database.FirebaseDatabase.setPersistenceEnabled(Unknown Source) 
                     at dreamchasers.com.coinpal.services.FirebaseBackgroundService.getDatabase32(FirebaseBackgroundService.java:297) 
                     at dreamchasers.com.coinpal.services.FirebaseBackgroundService.queryAlerts(FirebaseBackgroundService.java:85) 
                     at dreamchasers.com.coinpal.services.FirebaseBackgroundService.onStartJob(FirebaseBackgroundService.java:70) 
                     at com.firebase.jobdispatcher.JobService.start(JobService.java:127) 
                     at com.firebase.jobdispatcher.JobServiceConnection.onServiceConnected(JobServiceConnection.java:65) 
                     at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1516) 
                     at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1544) 
                     at android.os.Handler.handleCallback(Handler.java:751) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:154) 
                     at android.app.ActivityThread.main(ActivityThread.java:6776) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) 

Mein Hintergrund Service-Methode Feuerbasis Referenz init:

public static DatabaseReference getDatabase32() { 
    if (mDatabase == null) { 
     FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
     mDatabase = FirebaseDatabase.getInstance().getReference(); 

    } 
    return mDatabase; 
} 

Bitte helfen, jede Hilfe ist willkommen, Dank im Voraus!

Antwort

1

Nun, Jedesmal, wenn ich setPersistenceEnabled bin mit, ich tue es über app.java

Erstellen Sie einfach Klasse wie folgt aus:

public class App extends Application { 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
    } 
} 

Alles, was Sie dazu brauchen, zu arbeiten, gesetzt wird in application Tag in AndroidManifest.xml Attribut Android: Name = ". App".

<!-- other xml stuff --> 

<application ... android:name=".App"> 

    <!-- yet another stuff like nextline --> 
    <activity ... /> 
</application> 
+0

Wird dies ausgelöst, wenn die App geschlossen wird und nur Hintergrunddienste ausgeführt werden? –

+0

Ja, es wird, Sie können es versuchen .. – Nirel

Verwandte Themen