2017-11-18 19 views
0

は3時間のようにソリューションを検索していましたが、できませんでした。バックグラウンドサービスでのFirebaseリファレンスはsetPersistenceEnabledではありません

私はFirebaseデータベースを使用していますが、アクティビティ/フラグメントから使用するときはいつでもうまく動作しますが、バックグラウンドサービスから使用しようとするたびに、使用前に起動していても(そしてsetPersistentが最初に有効) 。

エラー

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) 

私のバックグラウンドサービスfirebase参照initメソッド:

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

    } 
    return mDatabase; 
} 

は助けてください、任意のヘルプは、事前に感謝歓迎です!

答えて

1

まあ、私はsetPersistenceEnabledを使用してい 毎回、私はちょうどそのようなクラスを作成app.java

を経由して、それをやっている:

public class App extends Application { 

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

あなたはこれが動作するために必要なすべての、置かれていますAndroidManifest.xml属性のandroid:name = "。App"内のapplicationタグ内にあります。

<!-- other xml stuff --> 

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

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

これは、アプリが終了し、バックグラウンドサービスのみが実行されているときに開始されますか? –

+0

はい、それはあなたがそれを試すことができます.. – Nirel

関連する問題