setPersistenceEnabled (true) вылетает приложение

Я создаю свое первое приложение Firebase. Одним из его требований является то, что он работает, когда сеть недоступна. Руководство Firebase гласит:

Включение сохранения диска позволяет нашему приложению также сохранять все его состояние даже после перезапуска приложения. Мы можем включить сохранение диска только одной строкой кода.FirebaseDatabase.getInstance () setPersistenceEnabled (истина). С включенным постоянством диска наши синхронизированные данные и записи будут сохраняться на диск при перезапуске приложения, и наше приложение должно работать без перебоев в автономном режиме.

Еще одно требование - использовать Google Sign In. Так по моемуMainActivity Я проверяю, вошел ли пользователь, если нет, запускаюSignInActivity, (TheSignInActivity из примеров Firebase.)SignInActivity работает, пользователь входит в систему, иMainActivity запускается во второй раз. Теперь мое приложение вылетает в строке кодаFirebaseDatabase.getInstance().setPersistenceEnabled(true); со следующим сообщением:

Вызовы setPersistenceEnabled () должны быть сделаны перед любым другим использованием экземпляра FirebaseDatabase.

Теперь, если я перезапущу свое приложение, пользователь войдет вSignInActivity не запускается, мое приложение работает нормально.

Любые предложения о том, как избежать этого сбоя после входа пользователя?

Когда я размещал этот вопрос, я получил предложение переехатьFirebaseDatabase.getInstance().setPersistenceEnabled(true); на мой «Класс приложений». Я получаю точно такой же результат ...SignInActivity начинается, завершается, и я получаю сбой наsetPersistenceEnabled.

Ниже мой MainActivityonCreate:

@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();
        }
    } 

Ответы на вопрос(17)

Ваш ответ на вопрос