我有点困惑与onEvent
,onEventMainThread
,onEventBackgroundThread
和onEventAsync
在Greenrobot's EventBus 3.0Greenbot Eventbus 3.0:onEvent,onEventMainThread,onEventBackgroundThread和onEventAsync有什么区别?
使用从我在documentation看到:
onEvent
用于与ThreadMode.POSTING
(默认)onEventMainThread
与ThreadMode.MAIN
onEventBackgroundThread
配合使用ThreadMode.BackgroundThread
onEventAsync
用于与ThreadMode.ASYNC
但在该事件从后台线程发布的情况:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(MyEvent event) {
// some UI manipulation
}
具有完全相同的行为:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEvent(MyEvent event) {
// some UI manipulation
}
而且:
@Subscribe
public void onEventMainThread(MyEvent event) {
// some UI manipulation
}
抛出CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
,因为线程与发布线程(我的测试中的后台线程)相同。
自3.0版以来,@Subscribe
注释是必需的,所以我不明白在哪种情况下我应该使用onEvent
以外的方法。他们是否一直在促进从EventBus 2升级到3?
@Subscribe(threadMode = ThreadMode.MAIN)
public void someMethodName(MyEvent event) {
// some UI manipulation
}
我:
是的。已完全移动到注释和方法名称已无关紧要。很高兴你找到答案。 – iZBasit