其他分享
首页 > 其他分享> > Roboguice,AndroidAnnotations和线程之间的事件

Roboguice,AndroidAnnotations和线程之间的事件

作者:互联网

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

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

解决方法:

至于我可以看到herethere,你可以使用@Observes(EventThread.CURRENT),@ Observes(EventThread.UI)或@Observes(EventThread.BACKGROUND)指定线程应该与RoboGuice中的事件混合的方式.

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

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

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

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

这回答了你的问题吗?

标签:android,events,concurrency,android-annotations,roboguice
来源: https://codeday.me/bug/20190826/1732037.html