Ответ 1
Я бы, вероятно, запустил другое событие, когда вы получите результат.
public void onEventBackgroundThread(MyEvent event) {
doSomeLongRunningProcess();
EventBus.getDefault().post(new MyEventResult());
}
Помните, что: чтение документов, вы найдете это:
BackgroundThread. Абонент будет вызываться в фоновом потоке. Если проводка потока не является основным потоком, методы обработчика событий будут вызываемый непосредственно в потоке проводки. Если поток проводки является main thread, EventBus использует один фоновый поток, который будет доставлять все его события последовательно. Обработчики событий, использующие этот режим следует попытаться быстро вернуться, чтобы избежать блокировки фонового потока.
Если вы займете много времени в этом методе, другие обратные вызовы EventBus будут задерживаться, что, вероятно, переведёт в невосприимчивое приложение.
Вероятно, вы хотите использовать onEventAsync:
Async: методы обработчика событий вызывают в отдельном потоке. Это всегда независимо от проводки и основного потока. События в проводке никогда не ждут методов обработчика событий, используя этот режим. Методы обработчика событий должны использовать этот режим, если их выполнение может потребуется некоторое время, например. для доступа к сети. Избегайте запуска большого количество длинных асинхронных методов обработчика одновременно для ограничения количества одновременных потоков. EventBus использует пул потоков для эффективного повторного использования потоков из завершенного обработчика асинхронных событий уведомления.