一个时间跨度比较长的项目,用的EventBus的版本是2.4的,也不改了,不知道更高版本会不会有这个问题。
一般的,在public void onEventMainThread(...)方法里面响应EventBus的post方法调用,今天遇到了一个坑。我在方法里发送广播,但就是怎么都发不出去,检查广播调用,写法没有问题。后来我把这部分代码拿到onCreate方法里面去,执行就崩溃了。
查看崩溃日志发现广播带的Bundle的对象封装有问题,出现空指针,但是在onEventMainThread方法里面执行就不会崩溃,所以问题不容易发现,应该是onEventMainThread默认把方法体内的代码都try/catch了。当然,细心点的话,即使不会崩溃,日志还是能看到详细错误信息的。
总结:EventBus的onEventMainThread方法内部,代码出错程序执行不会崩溃,需要注意。
本文探讨使用EventBus 2.4版本时遇到的问题,即在onEventMainThread方法中发送广播时,虽然代码逻辑正确,但在某些情况下却无法正常发送。通过对比在不同方法中的执行效果,发现该方法会默认捕获异常,导致错误难以察觉。
1428

被折叠的 条评论
为什么被折叠?



