EventBus初探

前两天看了下eventbus,今天跟大家分享一下。

1:EventBus地址

        https://github.com/greenrobot/EventBus

借用下官网的图片

上图是eventbus给出的描述,主要包括三部分1:publisher发布者 2:subscriber订阅者 3:event事件。

2:添加EventBus到项目中

    这是只给出gradle中添加

compile 'org.greenrobot:eventbus:3.1.1'

 3:   定义事件

        

public class MessageEvent {
    private String message;

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

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

如上定义好后准备下一步操作,其实就是定义bean类,用于定义接收信息的model。

扫描二维码关注公众号,回复: 2751531 查看本文章

4:注册和取消注册

5:处理事件

    

   @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(MessageEvent messageEvent){
        tvDesc.setText(messageEvent.getMessage());
    }

利用注解,定义好threadmode;threadmode一共有如下类型:

  ThreadMode.POSTING:订阅者在发布事件同一线程中调用,这是默认值。事件传递时同步完成的,所有订阅服务器在发布完 成后都会被调用。

ThreadMode.Main :事件处理函数在主线程(UI)线程,所以在这里不能进行耗时操作,以免阻塞主线程。

ThreadMode.BACKGROUND:订阅者在后台线程中被调用,

ThreadMode.ASYNC:事件处理函数始终创建新的线程,与发布线程和主线程无关。eventBus使用线程池来有效的处理程序通知

ThreadMode.Main_ordered:事件处理函数在ui线程,事件总是先入队,后交付给用户。事件处理严格按串行顺序。

除了模式外,还可以指定优先级:

 @Subscribe(threadMode = ThreadMode.MAIN,priority =2)
    public void onMessageEvent1(MessageEvent messageEvent){
        Log.e("messageevent","2");
    }
    @Subscribe(threadMode = ThreadMode.MAIN,priority = 3)
    public void onMessageEvent2(MessageEvent messageEvent){
        Log.e("messageevent","3");
    }
priority默认为0,数值越大,优先级越高。


6:发送事件

    EventBus.getDefault.post(Object event);



Github地址




猜你喜欢

转载自blog.csdn.net/qq_23025319/article/details/79675580