EventBus很早就已經流行並使用了,但是由於種種原因一直沒踩坑。
EventBus是針對Android的發佈/訂閱事件總線。
EventBus3.0是當前最新的版本,它與之前版本相比較,加入了註解使代碼更加簡潔,使用更加方便。
主要功能:
在Activity,Fragment和線程之間傳遞消息。
優點:
1、簡化了組件之間的通訊(解耦了發送者和接受者,避免了複雜和容易出錯的依賴和生命週期問題)
2、使代碼更加簡潔優雅;
3、體積小;
4、擁有線程交付和用戶優先級等功能;
踩坑
1、直接定義的接受粘性事件方法會在onCreate方法前執行;
2、接受數據類型時,必須使用對象,int.class不能接受到數據類型是Integer的消息;
簡單使用
發送普通事件
EventBus.getDefault().post("Main1");
接受普通事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void setValue(String val) {
tvValue.setText(val);
}
EventBus.getDefault().postSticky(123);
接受粘性事件,方法調用接受和註解
EventBus.getDefault().removeStickyEvent(Integer.class)
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void setValueStrick(Integer val) {
Log.i(TAG, "Strick:" + val);
}
源碼