Только что началось с GreenRobot EventBus.
Есть только одна вещь, которая мешает мне бороться: как вы общаетесь между разными потоками, так что метод onEventXY() фактически также выполняется в подписанной теме.
Кажется, что когда вы публикуете событие, метод onEvent подписчиков вызывается из того же потока, что и поток, на котором было отправлено событие. Это не то, что я хочу.
Я хочу использовать EventBus для межпоточной связи таким образом, что фактический полученный объект события обрабатывается методом onEvent в потоке, который получил объект события.
Возможно ли это?
Пример:
- mainThread
- backGroundThread1
- backGroundThread2
MainThread отправляет событие на EventBus, backGroundThread1 получает его в свой метод onEventXY() и выполняет код в своем собственном потоке (устанавливает некоторую переменную), backGroundThread2 получает его в свой метод onEventXY и выполняет код внутри своего потока (устанавливает некоторые переменная).
Если это невозможно (пока), я обречен использовать очереди потоков, такие как BlockingQueue, которые сложнее реализовать.
Любые идеи?