使用Android上的Otto Event Bus庫

Otto是一個提供事件總線實施的開源項目。組件可以發(fā)布和訂閱事件。

Otto是Google?的Guava事件總線庫的一個分支,并且已被重新設(shè)計以盡可能支持Android。與Guava事件總線不同,Otto不考慮基類或接口的事件訂閱。這樣做是為了提高庫的性能,并保持應(yīng)用程序代碼簡單明了。

如果您使用Maven或Gradle作為構(gòu)建系統(tǒng),您可以簡單地為其添加依賴關(guān)系

在gradle中配置:

您也可以從Download Otto手動下載?JAR?,并將其添加到應(yīng)用程序的類路徑中

如何設(shè)置Otto?

要使用Otto,請創(chuàng)建Bus該類的單例實例并為您的Android組件提供訪問權(quán)限。這通常是在應(yīng)用程序的Application對象中完成的

這里使用了ThreadEnforcer.MAIN參數(shù)。這強制Otto始終從主線程發(fā)送事件。如果你希望能夠從任何線程發(fā)送事件,請使用ThreadEnforcer.ANY參數(shù)。

如何注冊和注銷事件?

事件注冊是通過@Subcribe公共單參數(shù)方法的注釋完成的。方法參數(shù)是事件鍵,即如果通過Otto事件總線發(fā)送這種數(shù)據(jù)類型,則調(diào)用該方法。

事件接收者必須通過該類的register方法進(jìn)行注冊Bus。

事件注銷使用該unregister()方法。

如何發(fā)送活動

發(fā)送事件,不需要注冊事件總線

新組件如何接收一個事件?

有時,新組件,如動態(tài)創(chuàng)建的fragment,應(yīng)該在創(chuàng)建過程中接收事件數(shù)據(jù)。如果這個案件組件可以注冊為這種事件數(shù)據(jù)的注冊制作者@Produce。

有時,新組件,如動態(tài)創(chuàng)建的fragment,應(yīng)該在創(chuàng)建過程中接收事件數(shù)據(jù)。如果這個案件組件可以注冊為這種事件數(shù)據(jù)的注冊制作者@Produce。

事件接收者必須通過該類的register方法進(jìn)行注冊Bus。



例子:

將依賴關(guān)系添加到build.gradle文件中。

activity_main.xml布局文件應(yīng)該如下所示

fragment_main.xml的布局文件

這個例子是故意簡單的。在真正的應(yīng)用中,將Bus在Application該類中創(chuàng)建單例。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,365評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評論 19 139
  • 前言 在微服務(wù)架構(gòu)的系統(tǒng)中,我們通常會使用輕量級的消息代理來構(gòu)建一個共用的消息主題讓系統(tǒng)中所有微服務(wù)實例都連接上來...
    Chandler_玨瑜閱讀 6,789評論 2 39
  • 面試題總結(jié) 通用 安卓學(xué)習(xí)途徑, 尋找資料學(xué)習(xí)的博客網(wǎng)站 AndroidStudio使用, 插件使用 安卓和蘋果的...
    JingBeibei閱讀 1,890評論 2 21
  • 35個小時,跟大多數(shù)的書友一樣,我看完了《三體》全集。 在第一部中,作者只是在講人類世界和三體游戲這兩條主線,而其...
    迷途小二哈閱讀 856評論 0 0

友情鏈接更多精彩內(nèi)容