码迷,mamicode.com
首页 > 其他好文 > 详细

EventBus的使用

时间:2016-09-13 20:32:38      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:

Android APP当中可以用于传递消息的有广播、Intent、Handle等,使用EventBus可以取代它们的一些功能,而且使得代码非常的简明优雅。

导入EventBus的包之后,便可以使用了,使用方法如下

发送消息

Object obj = new Object()
EventBus.getDefault().post(obj);

接收消息的类需要先注册,当类销毁时,要进行注销。一般接收消息都是Activity类,所以都在onCreate函数当中进行注册,在Ondestroy函数当中注销

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    EventBus.getDefault().register(this);
}


@Override
protected void onDestroy() {
    super.onDestroy();
    EventBus.getDefault().unregister(this);
}
接收有四个函数可供选择,他们的差异如下所示
    //发布事件和接受事件在同一个线程,避免做复杂耗时的操作
    public void onEvent(Object obj){
        System.out.println("do something");
    }

    //接收事件在UI线程当中执行,可以修改UI界面
    public void onEventMainThread(Object obj){
        System.out.println("do something");
    }

    //如果发送事件从UI事件当中发出,则接收事件在子线程当中执行
    //如果发送事件本身就是从子线程当中发出,则接收事件和发送事件在同一线程当中
    public void onEventBackground(Object obj){
        System.out.println("do something");
    }

    //新建子线程接收
    public void onEventAsync(Object obj){
        System.out.println("do something");
    }
EventBus是根据参数进行识别发送的,比如post(A a),那么接收的时候会判断参数是否是类A,如果是才会发送到这个接收函数。
 
EventBus是典型的观察者模式,EventBus是消息发送者,而其他注册的类属于消息订阅者。其内部会根据订阅者的接收类型进行分发。
 
EventBus源码地址:https://github.com/greenrobot/EventBus
 
 
 

EventBus的使用

标签:

原文地址:http://www.cnblogs.com/huangbei1990/p/5869587.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!