在应用开发过程中少不了使用Intent,线程,广播传递数据,当应用包还比较小的时候我们并不会感觉这些方法会有多麻烦,但是当应用包越来越大,模块越来越多,功能越来越复杂,这用这些方法就会感觉越来越难受,甚至你自己都感觉写的想吐,而这时EventBus就是你最好的选择(其实我最开始就想代替跳转传值而已),Eventbus具有集成方便,简单易用,代码量少,耦合性低的优点,大大的方便了各个功能模块(activity,fragment,service等等)的通信

1. 先上一个EventBus的地址吧EventBus GitHub地址

看看他的介绍,个人较懒,就不打字了,直接上图,我比较喜欢图EventBus3.0集成使用详解(上)

EventBus3.0集成使用详解(上)

总而言之,言而总之吧,大概意思就是:EventBus能够简化各组件间的通信,能有效的吧发送方和接收方分离,避免过度依赖导致程序出错的问题

2.EventBus的三个重点

    ①MessageEvent实体对象,有很多都说是EventBus的事件,也确实是事件(因为EventBus根据他来判断是是谁发的事件),但总的来说总归是个对象,万物皆对象嘛,没有对象也可以new一个对象嘛,好了,扯远了现在扯回来,这个MessageEvent对象(事件)可以是任何类型的,String,int,,,Object等,他承载了我们需要发送的数据

    ②Subscriber事件订阅者,用于接收事件,方法名可以随意取,单是必须是公开方法(public),非公开方法会报错哦,亲测报错EventBus3.0集成使用详解(上).......

    ③Promulgator事件发布者,用于发布事件,简单来说就是一句代码的事,如果不行就换句代码,,,,,,下面例子会说到


3.集成EventBus

    在build下添加,,,,不多说了,用AS的都知道

EventBus3.0集成使用详解(上)

4.注册与注销

    在你看的顺眼生命周期注册一下(onCreate,onStart),然后在不顺眼的地方在注销下,(onStop,onDestroy),尽量去尝试,注意生命周期哦,,,,,注册代码为EventBus.getDefault.register();注销代码为EventBus.getDefault.unregister()。在这里说一下另一条语句,EventBus.getDefault.isRegister(),这条语句是判断是否注册的,可以配合上面那两句代码用

实现代码

EventBus3.0集成使用详解(上)

5.发送消息

先搞一个实体对象(事件)用来发送消息,例如下图:

EventBus3.0集成使用详解(上)

然后写个发送事件布局就一个button

EventBus3.0集成使用详解(上)

6.接收事件,接收事件,接收事件

EventBus3.0集成使用详解(上)

7.运行程序测试,去吧皮卡丘

EventBus3.0集成使用详解(上)


结尾:

    EventBus用法当然不止这些,这些只是最简单最基本的用法,下篇文章给大家唠叨唠叨粘性传递

相关文章:

  • 2021-11-29
  • 2023-02-06
  • 2021-04-19
  • 2021-09-17
  • 2022-01-22
  • 2022-12-23
  • 2021-05-19
猜你喜欢
  • 2021-08-01
  • 2022-12-23
  • 2021-03-31
  • 2021-12-16
  • 2021-12-16
  • 2021-12-18
  • 2022-12-23
相关资源
相似解决方案