android EventBus 的使用

一笑奈何 提交于 2019-12-27 03:42:19

 今天简单的介绍 一下啊 android  EventBus 的使用 

 EventBus 在官方介绍中是订阅......什么的 一大堆  ,  在我android 菜鸟眼里 就是用来代替android 广播的  简单粗暴 效率高;

其实用法挺简单 的   就   三步   注册(官方叫订阅)   接收   取消(取消订阅). 算了 不多说直接上代码 ;

 

如果你用的是 android studio 直接在build.gradle 里添加 :

compile files('libs/EventBus2.4.jar') 这个基础的就不做 过多解释了 网上 jar  类库什么的一大堆下面是使用:首先是发送数据
EventBus.getDefault().post(event);//这个在项目哪里都可以发的  event 参数等下讲接收:
EventBus.getDefault().register(this);//接收之前是要先注册的  否则不会触发
onEventMainThread  也就是收不到发的event 你可以写在onCreate()等初始化方法里 
public void onEventMainThread(Event event) {//接收方法(这是低版本固定格式后面介绍高版本使用)//event 可以是任意类型  只能一个参数 建议封装一下扩展性强一点 下//就把这里当做广播接收的地方用吧  更新ui  获取数据.....都可以int type = event.getType();
switch (type) {    case 1:               break;    case 2:             }        break;    case 3:              break;}
}//Event 封装 
public class Event {    private int type;    private Object message;    public int getType() {        return type;    }    public void setType(int type) {        this.type = type;    }    public Object getMessage() {        return message;    }
    public void setMessage(Object message) {        this.message = message;    }}
到这里就介绍完了.....相信初学的都能看懂  另外有些时候 发现跟新ui有时候会不灵  可能是不同的项目某些写法上造成的  原因还在查找中  ,但是放心用吧 一般情况不会有问题的 然后提一下 EventBus3.0   用法都一样 只是接收方法不一样了 想在
onEventMainThrea更新ui  必须在方法头部加 
@Subscribe(threadMode = ThreadMode.MainThread) //在ui线程执行
    public void onUserEvent(UserEvent event) {
    }
    @Subscribe(threadMode = ThreadMode.BackgroundThread) //在后台线程执行
    public void onUserEvent(UserEvent event) {
    }
    @Subscribe(threadMode = ThreadMode.Async) //强制在后台执行
    public void onUserEvent(UserEvent event) {
    }
    @Subscribe(threadMode = ThreadMode.PostThread) //默认方式, 在发送线程执行
    public void onUserEvent(UserEvent event) {
    }另外  :你不必再去约定OnEvent方法开头了该操作很简单,定义了一个hello方法,需要传入String参数,在其中操作UI操作,注意:我们添加了注解@Subscribe,其含义为订阅者,在其内传入了threadMode,我们定义为ThreadMode.MainThread,其含义为该方法在UI线程完成,这样你就不要担心抛出异常啦。是不是很简单?
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!