我有點困惑與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