導語,eventbus大家應該不陌生,eventbus是一款針對android優化的釋出/訂閱事件總線。主要功能是替代intent,handler,broadcast在fragment,activity,service,線程之間傳遞消息.優點是開銷小,代碼更優雅。以及将發送者和接收者解耦。反正能幫助我們快速開發,這個确實是個好東西,其實鴻洋大神已經對源碼作了一個較全面的剖析了
<a href="http://blog.csdn.net/lmj623565791/article/details/40920453">android eventbus源碼解析 帶你深入了解eventbus</a>
我這裡就簡單的聊聊怎麼去使用和實踐了,在這裡,要感謝一下開原作者,也就是《android源碼設計模式解析和實戰》的作者何紅輝
eventbus已經更新到了3.0了,也優化得更多好了,推薦使用3.0及以上版本,這裡先放上一張github上的介紹圖

好的,我們一步步來分析這張圖
既然是個庫,我們首先要做的,肯定是引入他的依賴了
如果是eclipse,那就自行去github上下載下傳jar包添加到libs目錄下
這裡我們要明白一個概念,就是事件總線管理,明白了事件總線管理,你就知道這個庫的妙用了,我們分三點來概述
将事件放在隊列裡,用于管理和分發
保證應用的各個部分之間高效的通信及資料,事件分發
子產品間的解耦
當然啦,這樣說可能有點籠統,我們再來分析一下,關于事件總線,一共四個部分
釋出者
訂閱者
事件
總線
這也就迎合我們事件總線的思想了,訂閱者可以訂閱多個事件,釋出者也可以釋出任何事件,釋出者同時也可以是訂閱者,他的步驟
訂閱
注冊
釋出
取消注冊
現在是不是對eventbus有一個大概的輪廓啦?現在我們了解這張圖就簡單多了,釋出者把事件釋出到總線裡面再進行分發
我們按照流程來
一句話就注冊,當然,他裡面不光可以傳上下文,還可以傳類和事件訂閱參數
取消注冊同樣的,裡面也可以和注冊一樣傳遞參數,我們後面詳細說
釋出有兩種
直接釋出
滞留釋出
這也是他的一個優勢的地方,在3.0之前的版本,我們是這樣的
3.0之後,我們看官方文檔
<a href="http://greenrobot.org/files/eventbus/javadoc/3.0/">http://greenrobot.org/files/eventbus/javadoc/3.0/</a>
事件處理就需要這樣使用了
我們可以注解在方法名上面标記,subscribe是訂閱者的意識,我們定義一個threadmode ,四種模式
mainthread
backgroundthread
async
postthread
大意就是這樣,不知道大家了解了多少?總的來說,就是注冊了之後,就可以,比如我這邊發送一個消息資料,你那邊就可以接收了
我們直接來一個小例子吧,例子也是非常的簡單,在一個地方發送一個資料消息事件,另一個地方去接收,這個應該不難,大家都知道做,我們建立一個工程——eventbus
我們首先注冊,在把取消注冊綁定在ondestroy()上,不多說,這裡我們的主布局沒什麼東西,一個按鈕點選發送,一個textview去接收
我們還需要一個實體類去儲存資料
接着,我們在button的點選事件中去發送我們的自定義消息
然後我們在主線程彙總接收這個消息
這樣一個簡單的事件訂閱,接收就完成了,我們來看一下效果
這裡我所講的可能稍微簡單點,但是eventbus真的是一個很容易上手,又強大的庫,如果細心又愛專研的同學去github上看一下,也就大概的了解了一個思路,我作為一個老司機,也隻是抛磚引玉了