我们在之前对EventBus的源码做了解析,今天我们来一起将EventBus集成到自己的项目,遇到的问题我们一起探讨:
截至目前为止EventBus的最新版本为3.1.1
EventBus的githup地址:https://github.com/greenrobot/EventBus
配置环境为AndroidStudio版本为3.1.2
首先:引入EventBus:
注意:在AS3.0以后,引入三方依赖库需要将compile改为implementation;
接下来在基类中进行绑定事件和注销事件:
然后创建EventMessage类:
然后在需要做操作的页面定义方法,即事件发送后需要执行的方法,在执行的方法上加上@Subscribe注解:
注:@Subscribe(threadMode = ThreadMode.MAIN)表示事件处理在UI线程内进行
@Subscribe(threadMode = ThreadMode.POSTING)表示事件的处理在和事件的发送在相同的进程,所以事件处理时间不应太长,不然影响事件的发送线程,而这个线程可能是UI线程;
@Subscribe(threadMode = ThreadMode.BACKGROUND) 表示事件的处理会在一个后台线程中执行,尽管是在后台线程中运行,事件处理时间不应太长
@Subscribe(threadMode = ThreadMode.ASYNS)表示事件处理会在单独的线程中执行,主要用于在后台线程中执行耗时操作,每个事件会开启一个线程(有线程池),但最好限制线程的数目
最后就可以在其他任意地方发送事件了:
至此,EventBus的基本使用就完成了,接下来,我们来看看实际运用过程中的一些坑:
1、如果有多个事件进行了注册,我们如何进行区分?
多个事件注册后,我们可以在消息传递类中加以参数进行区分,如下:
2、事件监听方法必须是pubilc修饰的,如果写成private,则不会收到消息;
3、如果你所有的事件监听方法都不用public修饰(包括父类),则会直接报错;
好了,今天的分享就到这里,如果小伙伴们遇到使用过程中的其他问题,可在文末进行留言,文中如有错误请指出,俺好及时修改,在此谢过!
如果喜欢,请扫描二维码关注
每天定时更新Android相关内容
有清蒸的、红烧的、爆炒的等等
还可以留言共同进行探讨问题
期待您的关注!!!