EventBus简单使用

 一、EventBus简介

    1. EventBus的作用

       是一个Android端优化的publish/subscribe消息总线,简化了应用程序内各组件间、组件与后台线程间的通信。比如请求网络,等网络返回时通过Handler或Broadcast通知UI,两个Fragment之间需要通过Listener通信,这些需求都可以通过EventBus实现。
     2. 下载地址
      https://github.com/greenrobot/EventBus
 二、 普通EventBus的使用步骤
       1.添加jar包到libs文件夹下或者添加依赖  compile 'org.greenrobot:eventbus:3.1.1' 到gradle中。
        2.注册
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                 //注册核心代码
                  EventBus.getDefault().register(this);
             }

         3.解注册

            @Override
            protected void onDestroy() {
                   super.onDestroy();
                   EventBus.getDefault().unregister(this);
            }

          4.构造发送消息类

            public class MessageEvent {
                    public String name;
                    public String password;
            public MessageEvent(String name, String password) {
                    this.name = name;
                    this.password = password;
            }
        }

        5.发布消息 

          EventBus.getDefault().post(new MessageEvent("test","abc"));

               发布

            6.接收消息             

                    接收消息有四种方式,如下;

  •                        ThreadMode.MAIN                      在主线程中执行。
  •                        ThreadMode.BACKGROUND        在后台执行,不能并发处理。
  •                         ThreadMode.ASYNC                   在后台执行,可以异步并发处理。
  •                         ThreadMode.POSTING               此方法和消息发送方在同一个线程中执行

                        代码如下;

                @Subscribe(threadMode = ThreadMode.MAIN)
                public void messageEventBus(MessageEvent event){
                        tv_result.setText("name:"+event.name+" passwrod:"+event.password);
                  }

           三.粘性EventBus

                    1.什么是粘性事件?

                               之前说的使用方法, 都是需要先注册(register), 再post,才能接受到事件; 

                        如果你使用postSticky发送事件, 那么可以不需要先注册, 也能接受到事件。

                    2.粘性EventBus的使用步骤

                           1)构造发送信息类

                      public class StickyEvent {
                            public String msg;
                            public StickyEvent(String msg) {
                                   this.msg = msg;
                             }
                        }

                           2)发布消息

                         EventBus.getDefault().postSticky(new StickyEvent("test"));

                           3)接收消息

                        //注意,和普通的EventBus的方法一样,区别在于粘性的多了一个 sticky = true 的属性.
                        @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
                        public void onEvent(StickyEvent event){
                            tv_c_result.setText(event.msg);
                        }

                            4)注册

                        EventBus.getDefault().register(XActivity.this);

                            5)解注册

                        EventBus.getDefault().removeAllStickyEvents();
                        EventBus.getDefault().unregister(XActivity.class);

            看到此,是不是接的EventBus的简单使用是不是很简单,谢谢浏览!

        

                            

                        

                    

            


      
                    

你可能感兴趣的:(Android)