EventBus框架

一:EventBus是個什么東西

下載地址:https://github.com/greenrobot/EventBus

EventBus就是publish/subscribe消息總線,主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,線程之間傳遞消息。

它的三要素:

Event:事件??梢允侨魏蔚膶ο?。

Subscriber:事件訂閱者,接收特定的事件。方法以onEvent**開頭,一共有四個方法onEvent,onEventMainThread,onEventBackgroundThread,onEventAsync。它們之間的區別在于在不同的線程。等會會有一一舉例。

Publisher:事件發布者,用于通知Subscriber有事件發生,可以在任何的地方發布事件。使用也是簡單,只要調用post(Object)方法就可以了。

二:如何使用

定義一個事件對象

創建MainActivity并注冊訂閱者

在MainActivity中實現onEvent**方法


點擊發送UI線程中的事件,onEvent執行就是在UI線程中,onEventMainThread也運行在UI線程中,onEventBackgroundThread是另啟動了一個線程,onEventAsync也是另啟動了一個線程。

點擊發送工作線程中的事件,onEvent執行在工作線程中,onEventMainThread運行在UI線程中,onEventBackgroundThread運行在當前的工作線程中,onEventAsync啟動了另一個線程。

所以根據上面的結果可以很好的理解各個onEvent的區別:

onEvent:事件在哪個線程發布出來的,就會在這個線程中運行,也就是說發布事件和接收事件線程在同一個線程。

onEventMainThread:事件無論是從哪個線程發布出來的,都會在UI線程中執行。

onEvnetBackground:事件是在UI線程中發布出來的,那么就會在子線程中運行,如果事件本來就是子線程中發布出來的,那么就直接在該子線程中執行。

onEventAsync:使無論事件在哪個線程發布,都會創建新的子線程。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 先吐槽一下博客園的MarkDown編輯器,推出的時候還很高興博客園支持MarkDown了,試用了下發現支持不完善就...
    Ten_Minutes閱讀 582評論 0 2
  • 一、EventBus框架的github地址:github.com/greenrobot/EventBus 主要用于...
    黃培忠閱讀 397評論 0 0
  • 1. Publisher是發布者, 通過post()方法將消息事件Event發布到事件總線 2. EventBus...
    onlyxing閱讀 1,060評論 0 1
  • 在Android開發中可能會遇到過這樣一種情況,兩個Activity或者Activity與Service、Acti...
    MQLX閱讀 340評論 0 3
  • 《面朝大海,春暖花開》 很喜歡《面朝大海,春暖花開》 這首詩讓我看到了一個善良淳樸純真樂觀簡單容易滿足重感情的海子...
    羽毛凌亂不成衣閱讀 688評論 4 4