https://github.com/greenrobot/EventBus
參考:Android EventBus 3.0.0 使用總結
發送數據:
EventBus.getDefault().post(a);
接收數據:
- 註冊:
EventBus.getDefault().register(this);
- 解註冊:
EventBus.getDefault().unregister(this);
- 處理數據:
@Subscribe(threadMode = ThreadMode.MAIN)
public void test(A a){ //參數類型與發送的數據的類型相同
}
四種threadMode:
ThreadMode.POSTING
發佈事件和接收事件在同一個線程。(避免執行耗時操作,防止阻塞線程)
ThreadMode.MAIN
不論事件是在哪個線程中發佈出來的,該事件處理函數都會在UI線程中執行。(該方法可以用來更新UI,但是不能處理耗時操作)
ThreadMode.BACKGROUND
如果事件是在UI線程中發佈出來的,那麼該事件處理函數就會在新的線程中運行;
如果事件本來就是子線程中發佈出來的,那麼該事件處理函數直接在發佈事件的線程中執行。
(禁止進行UI更新操作)
ThreadMode.ASYNC
無論事件在哪個線程發佈,該事件處理函數都會在新建的子線程中執行。(禁止進行UI更新操作)