EventBus 3.0使用相关

本文详细介绍EventBus的安装、配置及使用方法。包括如何在Android项目中集成EventBus库,实现不同组件间的通信,并通过示例代码展示如何发送和接收事件。

一 引入方法

  可以去github的官网中下载EventBus的相关资源  地址:https://github.com/greenrobot/EventBus

  当然还有他的官方网站 http://greenrobot.org/eventbus/

 Eclipse用户需要下载其jar包;AndroidStudio用户 可以在 build.gradle直接添加引用

compile 'org.greenrobot:eventbus:3.0.0'

 

二  使用

 1:在监听者的Activity或者Fragment或者其他地方注册及解除事件的绑定

    主要是通过使用EventBus,使Fragment之间的通信可以写的非常简洁易懂

  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        /**创建界面时订阅事件,接收消息*/
        EventBus.getDefault().register(this);
    }

 @Override
    public void onDestroy() {
        super.onDestroy();
        /**界面销毁时,取消订阅*/
        EventBus.getDefault().unregister(this);
    }

  因为EventBus使用的是单例模式,所以可以实现一句话实现注册和取消注册;也可以通过Builder来自己创建;

     以上完成后就相当于注册了本界面接受消息,这样你在其他地方发消息时就可以通知本界面(是比Handler好用)

2:写传送Message POJO(Plain Ordinary Java Object)简单的Java对象

public class MsgEvent1 {
    private String msg;

    public MsgEvent1(String msg) {
        super();
        this.msg = msg;
    }
    public String getMsg() {
        return msg;
    }
}

2:写监听方法

这个监听方法名字你可以自己取,但是得写上@Subscribe 注解,且形参必须要和传送过来的参数类型一致;

那么既然名字能随意去取,怎么能控制运行的线程呢,答案就是在注解中控制 @Subscribe(threadMode = ThreadMode.MAIN)

需要设置ThreadMode即可

  @Subscribe
        public void onEvent(MsgEvent1 msg){
            String content = msg.getMsg()
                    + "\n ThreadName: " + Thread.currentThread().getName()
                    + "\n ThreadId: " + Thread.currentThread().getId();
            System.out.println("onEvent(MsgEvent1 msg)收到" + content);
            tv.setText(content);
        }

3:在任何地方发送消息

且只需要一句话就行

EventBus.getDefault().post(new MsgEvent1("Fuck World!!));
这样EventBus使用就完成了

有几个注意的地方
1:哪个监听者会作出相应这要看你post的类型!!
2:监听方法注意加@Subscribe注释,否则会报错:
Caused by: org.greenrobot.eventbus.EventBusException: Subscriber class com.example.XXXXXX and its super classes have no public methods with the @Subscribe annotation
3:监听方法为Public方法

转载于:https://www.cnblogs.com/fengfenghuifei/p/6277835.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值