EventBus的粗暴使用方法

既然是簡單粗暴,就不寫什麼EventBus詳細介紹了,這裏有源碼詳解和具體使用方法https://www.jianshu.com/p/6da03454f75a函數

首先:post

一、添加依賴。this

1 implementation 'org.greenrobot:eventbus:3.0.0'

 

二、定義一個消息事件類;spa

 

/** * 傳遞消息時使用,能夠本身增長更多的參數,不限制類型 */

public class EventMsg { private String Tag; private String Msg; public String getTag() { return Tag; } public String getMsg() { return Msg; } public void setTag(String tag) { Tag = tag; } public void setMsg(String msg){ Msg = msg; } }

三、註冊EventBus,在要接收消息的頁面註冊.net

1 /*register EventBus*/
2         if (!EventBus.getDefault().isRegistered(this)) { 3             EventBus.getDefault().register(this); 4         }

四、發送消息。線程

 1 /**
 2  * 發送鏈接狀態消息  3  *  4  * @param constants  5      */
 6     private void sendEventMsg(String msg) {  7         EventMsg msg = new EventMsg();  8  msg.setTag(msg);  9  EventBus.getDefault().post(msg); 10     }

五、接收消息;code

1 @Subscribe(threadMode = ThreadMode.MAIN) 2     public void skipToMainActivity(EventMsg msg) { 3     //在這裏經過msg讀取 
4  msg.getTag(); 5 } 6     

接受消息有四個函數:blog

 

1 public void onEvent(AnyEventType event) {} 2 public void onEventMainThread(AnyEventType event) {} 3 public void onEventBackgroundThread(AnyEventType event) {} 4 public void onEventAsync(AnyEventType event) {} 

 

 

 

onEvent:若是使用onEvent做爲訂閱函數,那麼該事件在哪一個線程發佈出來的,onEvent就會在這個線程中運行,也就是說發佈事件和接收事件線程在同一個線程。使用這個方法時,在onEvent方法中不能執行耗時操做,若是執行耗時操做容易致使事件分發延遲。
onEventMainThread:若是使用onEventMainThread做爲訂閱函數,那麼不論事件是在哪一個線程中發佈出來的,onEventMainThread都會在UI線程中執行,接收事件就會在UI線程中運行,這個在Android中是很是有用的,由於在Android中只能在UI線程中跟新UI,因此在onEvnetMainThread方法中是不能執行耗時操做的。
onEventBackground:若是使用onEventBackgrond做爲訂閱函數,那麼若是事件是在UI線程中發佈出來的,那麼onEventBackground就會在子線程中運行,若是事件原本就是子線程中發佈出來的,那麼onEventBackground函數直接在該子線程中執行。
onEventAsync:使用這個函數做爲訂閱函數,那麼不管事件在哪一個線程發佈,都會建立新的子線程在執行onEventAsync. 事件

 

六、解除註冊ip

1 EventBus.getDefault().unregister(this);
相關文章
相關標籤/搜索