2016-08-10 11 views
2

Я хочу запустить события firebase на разные темы. На последней версии firebase у меня был этот код, который сделал этоБаза данных Firebase - работает на другую тему

Config firebaseConfig = new Config(); 
    firebaseConfig.setEventTarget(new EventTarget() { 
     ExecutorService executor = Executors.newSingleThreadExecutor(); 
     @Override 
     public void postEvent(Runnable runnable) { 
      executor.execute(runnable); 
     } 

     @Override 
     public void shutdown() { 
      executor.shutdown(); 
     } 

     @Override 
     public void restart() { 

     } 
    }); 
    Firebase.setDefaultConfig(firebaseConfig); 

Как я могу сделать это в новом API? Их путь или я должен реализовать его сам? (создать runnable каждой функции и запустить ее в исполнителе)

+0

Я не понимаю, но я хочу дать свои мысли, почему бы не создать diff Thread и запустить там весь этот код. поэтому, когда он возвращается к вызывающему Thread- (который является вашим фоновым потоком), он уже находится в фоновом режиме, затем вы можете привести его в поток MainUI. – Elltz

+0

firebase будет запускать код в событии в основном потоке ... it не имеет значения, где я пишу код. – Alon

ответ

9

Клиент базы данных Firebase выполняет всю работу в сети, дисковый ввод-вывод и другое обслуживание в отдельном потоке. Затем он обращает обратные вызовы к вашему коду основного потока, так что вы можете взаимодействовать с пользовательским интерфейсом.

В большинстве случаев вам не нужно ничего делать и вы можете просто позволить клиенту Firebase справиться с перекрестной обработкой. Только когда вам нужно выполнить тяжелую работу в своем обратном вызове (например, onDataChange()), вам придется снова запустить эту работу с основного потока. Для этого вы можете использовать обычные механизмы Threading для Android.

+0

Я знаю, что я могу использовать механизм потоковой передачи android, но в последней версии его можно было определить глобально как код в вопросе – Alon

+0

Этот API не существует в 3.x. Это никогда не было необходимо для Android. Что вы пытаетесь достичь? –

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