Roboguice,AndroidAnnotations和线程之间的事件

时间:2011-12-11 16:50:49

标签: android events concurrency roboguice android-annotations

当RoboGuice触发Event时,我的事件回调将在哪里执行,在哪个线程? 例如,我有一个活动(@Observes OnUpdateUiEvent e)。我还有一个后台线程,它会触发新的OnUpdateUiEvent(" data")。那么,我的do()方法将在我理解的bg线程中执行?如果我使用AndroidAnnotations中的@Background注释do(),会是什么?预处理器是否应该在runInUiThread()中调用do()?

如果一切正常,我认为这种模式将提供线程之间最简单的通信方式。

1 个答案:

答案 0 :(得分:6)

据我所知herethere,您可以使用@Observes(EventThread.CURRENT),@ Observes(EventThread.UI)指定线程与RoboGuice中的事件混合的方式。 )或@Observes(EventThread.BACKGROUND)。

默认为“CURRENT”,这意味着如果您没有指定任何内容,则事件侦听方法将在与接收事件的方法相同的线程中执行。

所以是的,如果你从后台线程中激活你的事件,do()将在后台线程中执行。

如果在do()方法上添加@Background,那么它将始终在一个单独的线程中执行,与您触发事件的线程不同。

如果您不确定,请设置断点并观察线程名称:-)。

这回答了你的问题吗?