首页 > 代码库 > EventBus的使用

EventBus的使用

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

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

发送消息

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

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

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    EventBus.getDefault().register(this);}@Overrideprotected 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的使用