Приложение показывает черный экран в течение от 2 до 4 секунд при выполнении действия на базе - PullRequest
0 голосов
/ 20 апреля 2020

Когда я загружаю, извлекаю или удаляю данные в Firebase Real time и после этого запускаю новое действие, приложение некоторое время показывает черный экран, а затем показывает новое действие. Пожалуйста, помогите мне. Я буду очень признателен.

Мой код одного действия

 private void sendTextToFirebase() {
    //here uploading the data
    myRef.child(selected_Category).child(String.valueOf(UniqueId)).setValue(member).addOnCompleteListener(new OnCompleteListener<Void>() {
        @Override
        public void onComplete(@NonNull Task<Void> task) {

            Intent homeActivity = new Intent(ManualCardActivity.this, HomeActivity.class);
            startActivity(homeActivity);
            finish();

        }
    });

}

Когда я удаляю новое действие, запуск приложения кода работает отлично.

Вот последняя часть моего прогона log:

E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной Процесс: com.webfabricant.schedular, PID: 13303 java .lang.RuntimeException: Невозможно запустить действие ComponentInfo {com.webfabricant.schedular / com.webfabricant.schedular.HomeActivity}: com.google.firebase.database.DatabaseException: вызовы setPersistenceEnabled () должны быть сделаны перед любым другим использованием экземпляра FirebaseDatabase. в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 3171) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3308) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android .app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 113) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 71 ) в android .app.ActivityThread $ H.handleMessage (ActivityThread. java: 2034) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper. l oop (Looper. java: 226) в android .app.ActivityThread.main (ActivityThread. java: 7191) в java .lang.reflect.Method.invoke (собственный метод) в com . android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 576) в com. android .internal.os.ZygoteInit.main (ZygoteInit. java: 942) Причина: com .google.firebase.database.DatabaseException: вызовы setPersistenceEnabled () должны быть сделаны перед любым другим Использование экземпляра FirebaseDatabase. на com.google.firebase.database.FirebaseDatabase.assertUnfrozen (com.google.firebase: firebase-database @@ 16.0.4: 347) на com.google.firebase.database.FirebaseDatabase.setPersistenceEnabled (com.google.firebase: firebase -database @@ 16.0.4: 315) в com.webfabricant.schedular.HomeActivity.onCreate (HomeActivity. java: 53) в android .app.Activity.performCreate (Activity. java: 7376) в android .app.Activity.performCreate (Activity. java: 7367) в android .app.Instrumentation.callActivityOnCreate (Instrumentation. java: 1271) в android .app.ActivityThread.performLaunchActivity (ActivityThread. java: 3151) в android .app.ActivityThread.handleLaunchActivity (ActivityThread. java: 3308) в android .app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem. java: 78) в android. app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor. java: 113) в android .app.servertransaction.TransactionExecutor.execute (TransactionExecutor. java: 71) в android .app.ActivityThread $ H.handleMessage ( Activi tyThread. java: 2034) в android .os.Handler.dispatchMessage (Обработчик. java: 106) в android .os.Looper.l oop (Looper. java: 226) в android .app.ActivityThread.main (ActivityThread. java: 7191) в java .lang.reflect.Method.invoke (собственный метод) в com. android .internal.os.RuntimeInit $ MethodAndArgsCaller.run (RuntimeInit. java: 576) по тел. android .internal.os.ZygoteInit.main (ZygoteInit. java: 942) I / Процесс: отправка сигнала. PID: 13303 SIG: 9

1 Ответ

0 голосов
/ 20 апреля 2020

Это потому, что вы выполняете тяжелую задачу в главном потоке приложения (потоке пользовательского интерфейса). Используйте AsyncTask или Rx Java для параллельного запуска задачи в фоновом потоке. Go для AsyncTask вам будет легко понять.

Ссылка на документацию AsyncTask

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...