Je suis de créer mon premier Firebase App. L'un de ses exigences, c'est qu'il s'exécuter lorsque le réseau n'est pas disponible. Le Firebase guide états:
L'activation de disque persistance permet à notre application pour aussi garder tous ses état, même après une application de redémarrer. Nous pouvons nous permettre de disque persistance avec une seule ligne de code. FirebaseDatabase.getInstance().setPersistenceEnabled(true); Avec disque persistance activé, nos données synchronisées et écrit seront enregistrées sur le disque d'application redémarre et notre application s'intègre parfaitement dans des situations hors ligne.
Une autre exigence est d'utiliser Google, connectez-vous. Donc, dans mon MainActivity
- je vérifier si l'Utilisateur est connecté, sinon, je lance l' SignInActivity
. (L' SignInActivity
est à partir de la Firebase des exemples). L' SignInActivity
fonctionne, l'utilisateur a ouvert une session, et MainActivity
est lancé pour la deuxième fois. Maintenant, mon application se bloque sur le code de la ligne FirebaseDatabase.getInstance().setPersistenceEnabled(true);
avec le message suivant:
Les appels à setPersistenceEnabled() doit être faite avant toute autre utilisation de FirebaseDatabase instance.
Maintenant, si je redémarre mon application, l'Utilisateur est connecté, l' SignInActivity
n'est pas lancé, mon appli fonctionne très bien.
Toutes les suggestions de comment je éviter ce plantage après que l'Utilisateur se connecte?
Comme je l'ai été poster cette question, j'ai reçu une suggestion de déménager FirebaseDatabase.getInstance().setPersistenceEnabled(true);
pour ma "classe d'Application". J'obtiens exactement le même résultat ... SignInActivity
commence, se termine, et j'ai un crash sur l' setPersistenceEnabled
.
Ci-dessous mon MainActivity onCreate
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Calls to setPersistenceEnabled() must be made before any other usage of FirebaseDatabase instance.
// Crash here upon returning from SignInActivity.
FirebaseDatabase.getInstance().setPersistenceEnabled(true);
mFirebaseDbReference = FirebaseDatabase.getInstance().getReference();
// Initialize Firebase Auth
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseUser = mFirebaseAuth.getCurrentUser();
if (mFirebaseUser == null) {
// Not signed in, launch the Sign In activity
Timber.tag("MainActivity").i("onCreate(): User not signed in, launching SignInActivity");
startActivity(new Intent(this, SignInActivity.class));
finish();
} else {
mUsername = mFirebaseUser.getDisplayName();
Timber.tag("MainActivity").i("onCreate(): User \"%s\" signed in.", mUsername);
if (mFirebaseUser.getPhotoUrl() != null) {
mPhotoUrl = mFirebaseUser.getPhotoUrl().toString();
}
}