EventBus3.0实例使用详解

时间:2024-06-08 06:59:48

我们在之前对EventBus的源码做了解析,今天我们来一起将EventBus集成到自己的项目,遇到的问题我们一起探讨:


截至目前为止EventBus的最新版本为3.1.1

EventBus的githup地址:https://github.com/greenrobot/EventBus


配置环境为AndroidStudio版本为3.1.2

首先:引入EventBus:

EventBus3.0实例使用详解

注意:在AS3.0以后,引入三方依赖库需要将compile改为implementation;


接下来在基类中进行绑定事件和注销事件:

EventBus3.0实例使用详解

EventBus3.0实例使用详解


然后创建EventMessage类:

EventBus3.0实例使用详解


然后在需要做操作的页面定义方法,即事件发送后需要执行的方法,在执行的方法上加上@Subscribe注解

EventBus3.0实例使用详解

注:@Subscribe(threadMode = ThreadMode.MAIN)表示事件处理在UI线程内进行

       @Subscribe(threadMode = ThreadMode.POSTING)表示事件的处理在和事件的发送在相同的进程,所以事件处理时间不应太长,不然影响事件的发送线程,而这个线程可能是UI线程;

       @Subscribe(threadMode = ThreadMode.BACKGROUND) 表示事件的处理会在一个后台线程中执行,尽管是在后台线程中运行,事件处理时间不应太长

      @Subscribe(threadMode = ThreadMode.ASYNS)表示事件处理会在单独的线程中执行,主要用于在后台线程中执行耗时操作,每个事件会开启一个线程(有线程池),但最好限制线程的数目


最后就可以在其他任意地方发送事件了:

EventBus3.0实例使用详解


至此,EventBus的基本使用就完成了,接下来,我们来看看实际运用过程中的一些坑:

1、如果有多个事件进行了注册,我们如何进行区分?

多个事件注册后,我们可以在消息传递类中加以参数进行区分,如下:

EventBus3.0实例使用详解


2、事件监听方法必须是pubilc修饰的,如果写成private,则不会收到消息;


3、如果你所有的事件监听方法都不用public修饰(包括父类),则会直接报错;


好了,今天的分享就到这里,如果小伙伴们遇到使用过程中的其他问题,可在文末进行留言,文中如有错误请指出,俺好及时修改,在此谢过!



如果喜欢,请扫描二维码关注

每天定时更新Android相关内容

有清蒸的、红烧的、爆炒的等等

还可以留言共同进行探讨问题

期待您的关注!!!


EventBus3.0实例使用详解