2016-06-06 10 views
9

Mit den folgenden, das erste Mal, es heißt es funktioniert, aber dann bei nachfolgenden Aufrufen mit "FirebaseApp-Namen [DEFAULT] bereits existiert fehl!"Wie überprüft man, ob eine Firebase-App bereits auf Android initialisiert ist

public FirebaseDatabase conn(Context c) { 
     FirebaseOptions options = new FirebaseOptions.Builder() 
       .setApiKey("key") 
       .setDatabaseUrl("url") 
       .setApplicationId("ID") 
       .build(); 


     /////I tried Try and Catch with no success////// 
     FirebaseApp app = FirebaseApp.initializeApp(c, options); 

     /// for this : FirebaseApp app = FirebaseApp.initializeApp(c, options, "some_app"); 
     //// will fail with "FirebaseApp name some_app already exists!" 
     return FirebaseDatabase.getInstance(app); 
} 

Alles oben genannte ist ein Versuch, eine Verbindung zu einer zweiten Firebase App herzustellen.

Antwort

23

Auf Feuerbasis Netz, überprüfen Sie, ob bereits mit initialisiert:

if (!firebase.apps.length) { 
    firebase.initializeApp({}); 
} 
+0

Cool, aber in android das ist unmöglich –

2

Ich denke, was Sie tun möchten, ist die Liste der laufenden Anwendungen vor der Initialisierung Ihrer App zu überprüfen. Jede der SDKs hat ein Verfahren für das Erhalten dieses Array, in Android ist es getApps:

https://firebase.google.com/docs/reference/android/com/google/firebase/FirebaseApp.html

Dann können Sie überprüfen, um zu sehen, ob Ihre App bereits initialisiert.

In meinem Fall habe ich gerade die Länge des Arrays überprüft (Ich benutze das Javascript/Web SDK so bin ich sicher, es ist ein wenig anders für Android) und eine neue App initialisieren, wenn es 0 ist.

0

ich die ähnlichen Problem konfrontiert, ich habe es wie folgt gelöst:

  1. für die Anwendung ein var erstellen und es wi initialisieren th null
  2. Nehmen Referenz der Anwendung während der Initialisierung
  3. prüfen, bevor es wieder

//global variable 
var firebaseResumeDownloadAdd = null; 

//inside function check before initializing 
if(firebaseResumeDownloadAdd==null){ 
    firebaseResumeDownloadAdd = 
    firebase.initializeApp(functions.config().firebase); 
} 
0

ich das ähnliche Problem konfrontiert zu initialisieren. Ich löste das folgende Problem, indem ich die bereits initialisierte App löschte.

// Access your firebase app 
    let app = firebase.app(); 
    // Delete your app. 
    app.delete(app); 

Lösung funktioniert für Web.

1

Sie können versuchen, die Firebase-App-Instanz zu erhalten, in deren Code die Firebase überprüft, ob sie initialisiert ist, andernfalls wird IllegalStateException ausgelöst.

try{ 
     FirebaseApp.getInstance(); 
    } 
    catch (IllegalStateException e) 
    { 
     //Firebase not initialized automatically, do it manually 
     FirebaseApp.initializeApp(this); 
    } 
Verwandte Themen