【发布时间】:2016-02-14 03:09:06
【问题描述】:
我对@987654321@中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?
【问题讨论】:
标签: java android event-bus greenrobot-eventbus greenrobot-eventbus-3.0