1、簡介
EventBus是一個Android端優化的pubish/subscribe消息總線,簡化了應用程序內各組件之間,組件與後臺線程間的通訊。
好比請求網絡,等網絡返回時Handler或BroadCast通知UI,兩個Fragment之間須要經過Listener通訊,這些需求均可以經過EventBus實現。
2、Github
`https://github.com/greenrobot/EventBus`
3、使用步驟
1.添加jar包到libs文件夾下
2.註冊
EventBus.getDefault().register(this)
3.解註冊(防止內存泄露)
EventBus.getDefault().unregister(this)
4.構造發送消息類
5.發佈消息
EventBus.getDefault().post(new MessageEvent("hahaha","12345"))
6.接收消息
ThreadMode.MAIN :
表示這個方法在主線程中執行
ThreadMode.BACKGROUND :
表示該方法在後臺執行,不能併發處理
ThreadMode.ASYNC:
也表示在後臺執行,能夠異步併發處理
ThreadMode.POSTING:
表示該方法和消息發送發在同一個線程執行(發送發和接收方都在同一個線程處理,如:發送發在主線程,接收方也在主線程)
4、粘性事件
註釋:
以前的使用方法都是須要先註冊(register)再post,才能接收到事件;
若是使用postSticky發送事件,那麼能夠不須要先註冊,也能接收到事件。
1. 構造發送信息類
2. 發佈消息EventBus.getDefault().postSticky(new StickyEvent("我是粘性事件"));
1. 接收消息
1. 註冊 EventBus.getDefault().register(CActivity.this);
1. 解註冊
5、例子
- 主線程發送消息
- 發送粘性事件