3

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

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

4

1 回答 1

6

据我在这里那里看到的,您可以通过使用 @Observes(EventThread.CURRENT)、@Observes(EventThread.UI) 或 @Observes(EventThread.BACKGROUND) 来指定线程应与 RoboGuice 中的事件混合的方式。

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

所以是的,如果您从后台线程触发事件,do() 将在后台线程中执行。

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

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

这回答了你的问题吗?

于 2011-12-11T23:12:16.793 回答