2016-11-20 17 views
0

Я использую Firebase. Моя проблема в том, что, когда я запрашиваю объекты, а затем их модифицирую, мой основной поток ui идет вперед и запускает следующие методы. Я хочу, чтобы мой основной поток ui подождал, пока мой запрос на firebase не будет завершен, и я сделал все необходимые изменения в onDataChange И THEN продолжал выполнять мои другие написанные мной функции.Как запустить метод при завершении запроса?

В настоящее время я просто импортировал внешнюю библиотеку «Отто», но я не уверен, как ее использовать, и я надеялся, что кто-то может помочь мне.

   Firebase cardReference = mRef.child("reference"); 
       cardReference.addValueEventListener(new ValueEventListener() { 
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) { 
        //DO STUFF 
        } 
        @Override 
        public void onCancelled(FirebaseError firebaseError) { 

        } 
       }); 
       //Once STUFF is done, run nextMethod() 
       nextMethod(); 
     } 
+0

Почему бы вам не использовать 'nextMethod()' в '' OnDataChange после редактирования материала 'Otto' это? pub-sub для операций. – adnbsr

ответ

0

Firebase асинхронно считывает данные из базы данных. Невозможно заставить приложение ждать, не показывая «Приложение не отвечает» вашим пользователям.

Вместо этого вам нужно пересмотреть свою логику. Вместо того, чтобы сказать «сначала загрузить ссылку, а затем сделать следующий метод», измените ее на «начать загрузку ссылки, когда это будет сделано, выполните следующий метод». В коде, который транслирует на:

Firebase cardReference = mRef.child("reference"); 
cardReference.addValueEventListener(new ValueEventListener() { 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     // Whenever STUFF is done, run nextMethod() 
     nextMethod(); 
    } 
    public void onCancelled(FirebaseError firebaseError) { 
     throw firebaseError.toException(); 
    } 
}); 

Дополнительное преимущество этого подхода заключается в том, что nextMethod() теперь также будет называться всякий раз, когда изменения эталонные данные. Обновление вашего пользовательского интерфейса в этом случае является одним из специальных эффектов, которые ваши пользователи оценят после их уведомления.

Для получения дополнительной некоторой информации, а также прочитать их:

 Смежные вопросы

  • Нет связанных вопросов^_^