EventBus 可以很方便地进行各组件间的通信,解耦性更强,比广播更好用。
EventBus 3 简介
EventBus是一种为了优化Android组件之间事件传递的解耦工具,通过发布/订阅事件总线来实现事件在不同组件之间的事件传递。
在EventBus 3之前,greenrobot团队因为考虑性能原因所以比较抵触使用注解框架。目前的EventBus3开始使用注解来申明订阅事件的处理方法。虽然目前Android 6 和ART都有了,但是对于Java反射造成的性能影响还是没能很好的解决。
在EventBus3中,greenrobot团队通过利用在编译时检索所有注解代码,然后生成一个包含所有在运行时要花很大代价才能获取的数据的类,通过这种新的注解处理方式来提升性能,让EventBus3比其他的eventbus会更加快。在后文中会贴出和otto的性能比较。
EventBus 3 和 EventBus 2.x 的区别
回调方法改动
由于API的改动,会导致EventBus3和之前使用老版本的EventBus不兼容,因为之前版本(EventBus 2.x),在注册完事件之后,会要求写相应 onEvent()方法,包括onEvent()、onEventAsync()、onEventBackground()、onEventMainThread() 分别对应 @Subscrible 、@Subscrible(threadMode = ThreadMode.ASYNC)、@Subscribe(threadMode = ThreadMode.BACKGROUND)、@Subscribe(threadMode = ThreadMode.MAIN) 。EventBus 3中在未声明threadMob时,默认的线程模式为ThreadMode.POSTING。
异常容错处理
在EventBus3中,如果在@Subscrible标注的方法中,如果程序出错,不会立即使程序crash,而是由EventBus拦截异常,并打印错误日志。
用户可以通过EventBusBuilder来配置获取EventBus实例后的对象,来决定在处理event时是否需要抛出异常信息:
eventBus = EventBus.builder().sendNoSubscriberEvent(false) .sendSubscriberExceptionEvent(false) .throwSubscriberException(BuildConfig.DEBUG) //只有在debug模式下,会抛出错误异常 .build();
本文标题:详解EventBus3.x的快速使用-创新互联
路径分享:https://www.cdcxhl.com/article22/dpghjc.html
成都网站建设公司_创新互联,为您提供移动网站建设、电子商务、网站营销、标签优化、定制开发、网站建设
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联