我对Greenrobot的 EventBus 3.0中的 、 和onEvent
的onEventMainThread
用法有点困惑onEventBackgroundThread
onEventAsync
从我在文档中看到的:
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?