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的簡單使用是不是很簡單,謝謝瀏覽!

        

                            

                        

                    

            


      
                    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章