EventBus快速入门(简单易懂篇)

前言:

       在以往的项目中,一般的监听事件,回调,activity之间的通信  与Frament的通信  我一般都是使用观察者模式。

EventBus快速入门(简单易懂篇)_第1张图片

1.写接口  传对象  设置方法回调。。。。。代码多 不够简洁。。所以决定使用EventBus

概念:

  **EventBus**是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过**EventBus**实现。

作为一个消息总线,有三个主要的元素:

Event:事件

Subscriber:事件订阅者,接收特定的事件

Publisher:事件发布者,用于通知Subscriber有事件发生

好了 不多话 直接撸代码

准备工作  直接build.grade依赖

在需要订阅的地方

EventBus快速入门(简单易懂篇)_第2张图片


在销毁的地方进行销毁

EventBus快速入门(简单易懂篇)_第3张图片

定义接受事件的类型和发生的线程(有四种形式)

接受类型是String  发送类型也应该 String   如果发送了一个对象  这里就接受不到信息

EventBus快速入门(简单易懂篇)_第4张图片

注意:在栈中(生命周期还存在的Activity和Fragment) 发送消息后  如果接受类型和发送类型一致,订阅的地方是都能收到事件。

EventBus快速入门(简单易懂篇)_第5张图片

好啦  接下来  说些简单的用法吧

1.在同一组件中发送和接受消息

就是这么的简单   订阅  发送事件  类型统一能接受到  不统一不行  接收到信息在哪个线程处理也是你喜欢的。。

EventBus快速入门(简单易懂篇)_第6张图片

2.用法二。上面是发送的String类型,但是我是建议传递的是一个自定义的对象,可以用对象来做标识,加个type  在接受的时候做判断 ,进行想处理的订阅的地方响应


EventBus快速入门(简单易懂篇)_第7张图片

3.在不同组件页面发送消息和接受消息和同一组件中是一致。。。。发送消息组件中不需要订阅和销毁   只需要调用,然后接受的处理就行咯


好啦  我的渣渣文章也写了接近尾声了   其实EcentBus使用起来很简单的 。。。。

接下来说下更多实用的效果:


一 前面说过在EventBus中有4种线程控制的方式:  现在来介绍一下吧、

1。POSTING:同步模式  很简单也就是 你是什么我就是什么 , 发送消息是什么线程,接受信息就到什么线程中,线程一致  你是在主线程中发送 我就在主线程中接受 ,你在子线程中发送  ,我也在和发送同一个子线程中接受

2.MAIN:主线程模式,无论发送事件是在那个线程发送,接收事件一定会在主线程中执行。这样刚好就解决了只能在主线程中更新UI的问题。。

3.BACKGROUND:后台线程模式,如果发送事件的是在主线程中发送,接收事件就会在新建一个子线程中执行。发送事件是在子线程中执行,接收事件就会在发送事件的子线程中执行,同一子线程。这种模式适合处理耗时任务。

4.ASYNC:新线程模式,无论发送事件是在何种线程执行,接收事件一定会新建一个子线程去接收。

在子线程中发送消息  4种线程的方式的结果如下。。代码就不上了 自己撸撸代码有感觉哦

EventBus快速入门(简单易懂篇)_第8张图片

二,优先级的问题

          我们如果有场景 同一页面中需要有先后的事件处理方式,并且有关联的数据联系的话,可以设置订阅事件处理的优先级。通过设置每个接收事件方法的优先级@Subscribe(priority = 1)开控制接收方法的先后。。priority数值越大  优先级越大


EventBus快速入门(简单易懂篇)_第9张图片

三。粘性事件

      在EventBus中  可以先发送事件 后在订阅  通过设置也能接收到信息  通过设置@Subscribe(sticky = true)去指定  发送的时候也必须是.postSticky()类型才行


EventBus快速入门(简单易懂篇)_第10张图片

四。拦截事件。。

          可以在方法内通过cancelEventDelivery()截断事件的传递。。。。场景的话自己看需求咯

但是注意的是 接受到的线程中想取消事件  必须在Posting中 否则会报错的哦

五。速度提升(要关联apt在bulid中设置 大家自己去研究下吧)不过我在项目中也没有加  哈哈


哈哈哈  EventBus的使用和基本的方法也说完  我理解的不够透彻  欢迎大神们指点  文章中有说的不好的 或者有问题的可以提出来  大家一起学习进步  我就是个渣渣 说的不好 敬请原谅 。。。。

愿我们一起成长 一起努力  享受这Android的神奇之旅,为人生的旅途增加更多的风采。  谢谢!!!

你可能感兴趣的:(EventBus快速入门(简单易懂篇))