EventBus3.0.0了解及使用

github:https://github.com/greenrobot/EventBus

app依赖库:compile 'org.greenrobot:eventbus:3.0.0'

一、概述

因为EventBus3.0.0跟以前的版本使用方法略有不同,所以在这记录一下。

二、了解及使用

1、定义一个消息类

public class OneEventBean {

    private String msg;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}
2、在需要接收消息的界面注册 EventBus

EventBus.getDefault().register(this);
3、在接收消息界面写一个接收的函数( 可以自定义函数名),但是这个地方需要加上 @Subscribe标签(必须加上,EventBus3.0.0内部根据它来识别所需要调用的方法

    @Subscribe(threadMode = ThreadMode.POSTING)
    public void onEventMainThread(OneEventBean busBean) {
        String msg = busBean.getMsg();
        Log.i("TAG", "busBean.getMsg()==" + msg);
        et.setText(busBean.getMsg());
        Toast.makeText(this, busBean.getMsg(), Toast.LENGTH_SHORT).show();

    }

@Subscribe标签参数说明:

  • ThreadMode.POSTING:默认方式,该事件在哪个线程发送出来的,就会在那个线程中运行,也就是说发送事件和接收事件线程在同一个线程(尽量不要在其中做耗时操作);
  • ThreadMode.MAIN:不管事件是在哪个线程中发送出来的,都会在UI线程中执行,接收事件就会在UI线程中运行(类似Handler);
  • ThreadMode.BACKGROUND:如果事件是在UI线程中发送出来的,那么就会在子线程中运行,如果事件本来就是子线程中发送出来的,则直接在该子线程中执行;
  • ThreadMode.ASYNC:无论事件在哪个线程发送,都会创建新的子线程在执行。

4、在需要发送消息的界面发送消息

 OneEventBean oneEventBean = new OneEventBean();
 oneEventBean.setMsg("测试EventBus-----------+++++++-");
 EventBus.getDefault().post(oneEventBean);
5、在需要接收消息的界面注销 EventBus(不要忘掉哦

EventBus.getDefault().unregister(this);


到此结束了,其实跟以前的版本差不多,只是只是接收的方法更灵活而已,如有什么问题或者是有新的见解,请留言评论,谢谢。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值