Android 之 Eventbus 的简单使用

前言:

         现在要想实现控件之间的通信,各个组件之间的通讯 已经不是一件难事。我们可以通过handler,广播,intent,接口方式来实现通讯。现在我们的难题就是来如何选择一种通信方式来实现,接下来我是想来讲一下 EventBus 的简单使用方式。

 

 步骤

  • 引用
  • 发布方
  • 完成信息载体
  • 订阅方
  • 区分接收某一个我们想要的信息
  • 四种线程模型

 

引用

    compile 'de.greenrobot:eventbus:3.0.0-beta1'

 

发布方

EventBus.getDefault().postSticky(new Message(temp));

 

信息载体

public class Message {
    public String name;

    public Message(String aName) {
        this.name = aName;
    }
}

 

订阅方

1、注册       2、接收

注册

EventBus.getDefault().register(this);

接收

     @Subscribe(threadMode = ThreadMode.MainThread,sticky = true )
        public void onEventMainThread(Message message) {
        Log.e("message~~~" ,""+ message.name);
        Toast.makeText(this, message.name, Toast.LENGTH_SHORT).show();
         demo.setText(message.name);
        EventBus.getDefault().unregister(this);
    }

 

区分接收某一个我们想要的信息

案例(收到的信息为temp1)

发送

                EventBus.getDefault().postSticky(new Message(temp));
                EventBus.getDefault().postSticky(new Mess(temp1));

接收

 @Subscribe(threadMode = ThreadMode.MainThread,sticky = true )
        public void onEventMainThread(Mess message) {
        Log.e("message~~~" ,""+ message.demo);
        Toast.makeText(this, message.demo, Toast.LENGTH_SHORT).show();
         demo.setText(message.demo);
        EventBus.getDefault().unregister(this);
    }

 

四种线程模型

EventBus3.0有四种线程模型,分别是:

  • POSTING (默认) 表示事件处理函数的线程跟发布事件的线程在同一个线程。
  • MAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。
  • BACKGROUND 表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。
  • ASYNC 表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。


Thanks

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值