2015-05-09 16 views
8

Sto provando a giocare un po 'con Firebase e Android.
Ho uno RegisterActivity e uno MainActivity. Il mio flusso di corrente è - iniziare con MainActivity - verificare se l'utente è registrato, in caso contrario, chiamare RegisterActivity - dopo la registrazione chiamare MainActivity.Dove mettere la funzione Firebase.setAndroidContext()

Ho problemi con dove mettere la chiamata Firebase.setAndroidContext().
Ho 2 domande:

  1. Devo chiamare questa funzione solo una volta nella Application o una volta in ogni Activty?
  2. Se la risposta per la domanda 1 è una sola volta, allora dove dovrei metterla?

Grazie a tutti, Giora.

+0

il motivo per cui non si vuole iniziare l'attività il registro - controllare utente registrato - se vero: avviare MainActivity? – mbelsky

+1

Secondo la documentazione corrente: * "Nel nuovo SDK, non è più necessario chiamare Firebase.setAndroidContext() in modo da poterlo rimuovere dal codice" * https://firebase.google.com/support/guides/ firebase-android - nella sezione ** Impostazione del contesto Android e attivazione della persistenza offline ** – gnB

risposta

16

citare (punto 4 del) Firebase quickstart documentation:

La biblioteca Firebase deve essere inizializzato una volta con un Android Context.Ciò deve accadere prima che venga creato o utilizzato qualsiasi riferimento Firebase.

Crea MyApplication.java:

public class MyApplication extends android.app.Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     //Previous versions of Firebase 
     Firebase.setAndroidContext(this); 

     //Newer version of Firebase 
     if(!FirebaseApp.getApps(this).isEmpty()) { 
      FirebaseDatabase.getInstance().setPersistenceEnabled(true); 
     } 
    } 
} 

E aggiornare nome del valore parametro nel AndroidManifest.xml:

<application 
     android:label="@string/app_name" 
     android:name=".MyApplication"> 
... 
</application> 
3

Come visto nello sample applications di Firebase, posizionarlo all'interno del proprio Application.

package com.firebase.androidchat; 

import com.firebase.client.Firebase; 

/** 
* @author Jenny Tong (mimming) 
* @since 12/5/14 
* 
* Initialize Firebase with the application context. This must happen before the client is used. 
*/ 
public class ChatApplication extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     Firebase.setAndroidContext(this); 
    } 
} 

Source


Firebase.getAndroidContext()

Dopo aver impostato il contesto di applicazione una volta che lo si può utilizzare dove mai ne avete bisogno. Puoi recuperarlo tutte le volte che vuoi, ovunque. Io consiglio anche di utilizzare la Firebase.getAndroidContext() invece di immagazzinarla in variabili per prevenire MemoryLeaks

+0

Grazie per la risposta - È anche corretto, ma posso contrassegnarlo solo come risposta. Grazie per l'aiuto! – gioravered

+0

@gioravered ho risposto prima: P ma nessun problema. Controlla anche le loro app di esempio su github. ti aiutano;) – mikepenz

+0

@gioravered infatti l'altra risposta che hai contrassegnato come corretta non risponde alla tua domanda iniziale come usare 'getAndroidContext()' – mikepenz

2

Non so Firebase ma so Android .. Un Context è un informazione globale su un ambiente applicativo. Il tuo Activity è un Context quindi sono abbastanza sicuro che Firebase.getAndroidContext() recupera l'applicazione Context che è getApplicationContext(), poiché ciò sembra ragionevole.

Devo chiamare questa funzione solo una volta in Applicazione o una volta in ogni Activty?

chiamata ogni volta che avete bisogno di un Context con rispetti a Firebase codes- ma penso che si adatti meglio se lo si chiama in Application classe

Se la risposta per la domanda 1 è solo una volta, poi dove dovrei metterlo?

cosa succede se non è una volta? dove lo chiami? Immagino che lo chiamerai ovunque ti occorra Context giusto? in modo da farlo indipendentemente dalla risposta alla domanda 1 di, ma si può cadere su Class.this, getBaseContext() o View.getContext() qualsiasi momento

+0

Mi dispiace, volevo dire setAndroidContext() e non getAndroidContext(). – gioravered

+0

beh un upvote sarà apprezzato anche se ero ancora sul punto..lol giusto? @gioravered – Elltz