(РЕШЕНО) Приложение выдает ошибку при открытии из последних приложений ⇐ Android
(РЕШЕНО) Приложение выдает ошибку при открытии из последних приложений
В моем приложении есть SplashActivity, приложение запускается с этим действием. SplashActivity имеет продолжительность 2,5 секунды, по истечении этого времени открывается HomeActivity. При нажатии кнопки «Назад» в HomeActivity приложение завершается с помощью FinishAffinity(). Всякий раз, когда я выхожу из HomeActivity и затем снова нажимаю на свое приложение из последних приложений, приложение не может перезапуститься. Я получаю информацию о пользователе в SplashActivity и передаю ее HomeActivty и использую для этого Firebase.
Когда приложение не может запуститься, возникает следующая ошибка:
java.lang.RuntimeException: невозможно начать действие ComponentInfo{com.medita.mobile/com.medita.mobile.SplashActivity}: com.google.firebase.database.DatabaseException: вызовы setPersistenceEnabled() должны быть выполнены перед любым другое использование экземпляра FirebaseDatabase.
Как это исправить? Я хочу, чтобы приложение перезагружалось с помощью SplashActivity, когда я выхожу из HomeActivity, нажимая кнопку «Назад» и снова нажимая на приложение в разделе «Недавние приложения».
Я попытался закрыть действие, удалив его из последних приложений при закрытии (finishAndRemoveTask()), но ничего не помогло. Поэтому я думаю, что на SplashActivity все заканчивается. Также я попробовал FinishAffinity() в методах onStop() onPause(), но это тоже не сработало.
Мой файл манифеста;
SplashActivity;
публичный класс SplashActivity расширяет AppCompatActivity { частный FirebaseAuth mAuth = FirebaseAuth.getInstance(); частный FirebaseUser currentUser; частная ссылка на базу данных currentUserRef; частная база данныхReference userRef; Строковое имя пользователя = null; Строка электронной почты = ноль; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.splash_screen); FirebaseApp.initializeApp(это); FirebaseDatabase.getInstance().setPersistenceEnabled(истина); ... новый Handler().postDelayed(новый Runnable(){ @Override общественный недействительный запуск () { если (currentUser!= ноль) { getLoggedInUsername(); Намерение домой = новое намерение (SplashActivity.this, HomeActivity.class); startActivity (дом); overridePendingTransition(0,R.anim.fade_out); заканчивать(); } еще { Намерение mainIntent = новое намерение (SplashActivity.this, LoginActivity.class); SplashActivity.this.startActivity(mainIntent); SplashActivity.this.finish(); overridePendingTransition(0,R.anim.fade_out); } } }, 2500); } частная строка getLoggedInUsername() { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); ... вернуть имя пользователя; } } HomeActivtiy;
@Override общественный недействительный onBackPressed () { закончитьАффинити(); } Вот как я решил свою проблему;
Я добавил этот код в свою SplashActivity.
статический { FirebaseDatabase.getInstance().setPersistenceEnabled(истина); }
В моем приложении есть SplashActivity, приложение запускается с этим действием. SplashActivity имеет продолжительность 2,5 секунды, по истечении этого времени открывается HomeActivity. При нажатии кнопки «Назад» в HomeActivity приложение завершается с помощью FinishAffinity(). Всякий раз, когда я выхожу из HomeActivity и затем снова нажимаю на свое приложение из последних приложений, приложение не может перезапуститься. Я получаю информацию о пользователе в SplashActivity и передаю ее HomeActivty и использую для этого Firebase.
Когда приложение не может запуститься, возникает следующая ошибка:
java.lang.RuntimeException: невозможно начать действие ComponentInfo{com.medita.mobile/com.medita.mobile.SplashActivity}: com.google.firebase.database.DatabaseException: вызовы setPersistenceEnabled() должны быть выполнены перед любым другое использование экземпляра FirebaseDatabase.
Как это исправить? Я хочу, чтобы приложение перезагружалось с помощью SplashActivity, когда я выхожу из HomeActivity, нажимая кнопку «Назад» и снова нажимая на приложение в разделе «Недавние приложения».
Я попытался закрыть действие, удалив его из последних приложений при закрытии (finishAndRemoveTask()), но ничего не помогло. Поэтому я думаю, что на SplashActivity все заканчивается. Также я попробовал FinishAffinity() в методах onStop() onPause(), но это тоже не сработало.
Мой файл манифеста;
SplashActivity;
публичный класс SplashActivity расширяет AppCompatActivity { частный FirebaseAuth mAuth = FirebaseAuth.getInstance(); частный FirebaseUser currentUser; частная ссылка на базу данных currentUserRef; частная база данныхReference userRef; Строковое имя пользователя = null; Строка электронной почты = ноль; @Override protected void onCreate (Bundle saveInstanceState) { super.onCreate(saveInstanceState); setContentView(R.layout.splash_screen); FirebaseApp.initializeApp(это); FirebaseDatabase.getInstance().setPersistenceEnabled(истина); ... новый Handler().postDelayed(новый Runnable(){ @Override общественный недействительный запуск () { если (currentUser!= ноль) { getLoggedInUsername(); Намерение домой = новое намерение (SplashActivity.this, HomeActivity.class); startActivity (дом); overridePendingTransition(0,R.anim.fade_out); заканчивать(); } еще { Намерение mainIntent = новое намерение (SplashActivity.this, LoginActivity.class); SplashActivity.this.startActivity(mainIntent); SplashActivity.this.finish(); overridePendingTransition(0,R.anim.fade_out); } } }, 2500); } частная строка getLoggedInUsername() { FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser(); ... вернуть имя пользователя; } } HomeActivtiy;
@Override общественный недействительный onBackPressed () { закончитьАффинити(); } Вот как я решил свою проблему;
Я добавил этот код в свою SplashActivity.
статический { FirebaseDatabase.getInstance().setPersistenceEnabled(истина); }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение