Roboguice, AndroidАннотации и события между потоками - PullRequest
3 голосов
/ 11 декабря 2011

Когда RoboGuice запускает Event, где будет выполняться мой обратный вызов события, в каком потоке? Например, у меня есть действие, которое имеет (@Observed OnUpdateUiEvent e). У меня также есть фоновый поток, который запускает новый OnUpdateUiEvent ("данные"). Итак, мой метод do () будет выполняться в потоке bg, как я понял? Что будет, если я аннотирую do () с @Background из AndroidAnnotations? Должен ли препроцессор вызывать метод do () в runInUiThread ()?

Если все правильно, я думаю, что этот шаблон обеспечит самый простой способ связи между потоками.

1 Ответ

6 голосов
/ 12 декабря 2011

Насколько я вижу здесь и там , вы можете указать, как потоки должны смешиваться с событиями в RoboGuice, используя @Observe (EventThread.CURRENT), @Observe (EventThread.UI) или @Observe (EventThread.BACKGROUND).

По умолчанию установлено значение "CURRENT", что означает, что если вы ничего не указали, метод прослушивания события будет выполняться в том же потоке, что и метод, получающий событие.

Так что да, если вы запускаете ваше событие из фонового потока, do () будет выполняться в фоновом потоке.

Если вы добавите @Background в метод do (), то он всегда будет выполняться в отдельном потоке, отличном от того, в котором вы инициировали событие.

Если вы не уверены, поставьте точку останова и просмотрите имена потоков :-).

Это ответило на ваш вопрос?

...