EventBus初探

eventbus是一种用于Android的事件发布-订阅总栈,简化了应用程序内各个组件之间进行通信的复杂度,尤其是碎片之间进行通信的问题,可以避免由于使用广播通信而带来的诸多不便。

eventBus 官网地址,写的很详细,多阅读阅读可以提高英语水平

http://greenrobot.org/eventbus/

1.首先可以用来线程间通信(顺带回顾一下线程间通信的其他方式,handler,AsyncTask,runOnUiThread)

添加依赖或者放入jar包

 compile 'org.greenrobot:eventbus:3.1.1'

 

我们需要编写一个类用于定义消息类型

 

public class MessageEvent {
    public  final String message;

    public MessageEvent(String msg) {
        this.message = msg;
    }
}

接下来正式使用EventBus

第一步,注册

EventBus.getDefault().register(this);

第二步,在子线程中发送消息

   new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 12; i++) {
                    if(i==10){
                        EventBus.getDefault().post(new MessageEvent("update"));
                    }
                }
            }
        }).start();

第三步,接收消息并处理

 @Subscribe(threadMode = ThreadMode.MainThread)//括号里的内容一定要写,不然会报错
     void onEventMainThread(MessageEvent event) {
        String msg = "onEventMainThread收到了消息+";
        Log.d("harvic", event.message);
        Toast.makeText(this, event.message, Toast.LENGTH_LONG).show();
    }

第四步,取消注册

EventBus.getDefault().unregister(this);

这样就可以了。其实在两个Activity之间跳转传值也是类似用来,只不过发送消息的放在了第二个Activity中。

需要特别注意的是应该先注册后调用post。

 

https://47.90.63.143/product/taobao?type=product&kw=%E7%8C%AB%E7%B2%AE&apikey=N1qXD2foRnk9N3TkesmxU84Z17cJJT5Ipt6dHNMIzmnbomoRHy35cm6CkwcE9HYX

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值