浅谈EventBus在Android开发中的常见用法与理解

前言:
在项目中经常会用到一些消息的传递,这个时候我们一般会考虑使用广播BoradCast,但是现在又多了一种考虑-那就是EventBus

简单介绍
1. EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架
2. 功能:通过解耦发布者和订阅者简化Android事件传递
3. EventBus可以代替Android传统的Intent,Handler,Broadcast或接口函数,在Fragment,Activity,Service线程之间传递数据,执行方法
4. 特点:代码简洁,是一种发布订阅设计模式(观察者设计模式)
这里我们来看看官方给出的图示,这里我也不做过多的介绍,具体的官方都已经说的很清楚不清楚的可以去看看:https://github.com/greenrobot/EventBus
这里写图片描述
接下来说说用法:
1.引入:如果是Android studio开发的项目直接把下面这句话放入app下面的build.gradle文件里面就可以使用了;如果是eclipse开发的项目则需要下载jar包放入lib文件夹中使用提供一个自己用的jar包供大家下载
2.使用:在使用的时候需要进行注册和注销:
在oncreat方法中注册EventBus.getDefault().register(this);在onDestory中注销EventBus.getDefault().unregister(this);
3.发送:在需要发送消息的地方EventBus.getDefault().post(“你好”)
4.接收:在接收的地方定义一个方法 方法名可以去任意的名字但是需要添加一个注解@Subscribe,并且要指定线程模型(默认为POSTING)例如:@Subscribe(threadMode = ThreadMode.MAIN)
public void getMsg(String msg) {
}
5.注意:EventBus不仅可以传递int,String还可以有很多类型,比如object或者是对象,实体类等,但是接收的地方一定要和发送的类型相同
6.EventBus粘性事件:这个粘性事件和粘性广播差不多,只有在发送和接收的时候有一点小小的不同:在发送的时候EventBus.getDefault().postSticky(String”粘性事件”); 然后接收的地方采用粘性接收 在订阅的地方申明粘性就可以了:@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
7.混淆规则
keepattributes Annotation
-keepclassmembers class ** {
@org.greenrobot.eventbus.Subscribe ;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
(java.lang.Throwable);
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值