《Android移動應用開發(fā)》EventBus事件管理_第1頁
《Android移動應用開發(fā)》EventBus事件管理_第2頁
《Android移動應用開發(fā)》EventBus事件管理_第3頁
《Android移動應用開發(fā)》EventBus事件管理_第4頁
《Android移動應用開發(fā)》EventBus事件管理_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

EventBus2024/1/29132024/1/29認識EventBus使用EventBus目錄CONTENT12參考教材:《Android應用開發(fā)項目化教程》認識EventBus來源EventBus是GreenRobot出品的Android系統(tǒng)的一個EventBus類庫。主要功能是替代Intent、Handler、BroadCast在Fragment、Activity、Service及線程之間傳遞消息。EventBus的優(yōu)點是開銷小,代碼更優(yōu)雅,并實現將發(fā)送者和接收者解耦。1認識EventBus角色Publisher:是發(fā)布者,通過post()方法將消息事件Event發(fā)布到事件總線。EventBus:是事件總線,遍歷所有已經注冊事件的訂閱者們,找到里邊的onEvent等4個方法,分發(fā)Event。Subscriber:是訂閱者,收到事件總線發(fā)下來的消息。即onEvent方法被執(zhí)行。注意參數類型必須和發(fā)布者發(fā)布的參數一致。1認識EventBus訂閱者訂閱者首先調用EventBus的register接口訂閱某種類型的事件,當發(fā)布者通過post接口發(fā)布該類型的事件時,EventBus執(zhí)行調用者的事件響應函數。1認識EventBusEventBus類EventBus類負責所有對外暴露的API,其中的register()、post()、unregister()函數配合上自定義的EventType及事件響應函數即可完成核心功能。EventBus默認可通過靜態(tài)函數getDefault()獲取單例,當然有需要也可以通過EventBusBuilder或構造函數新建一個EventBus,每個新建的EventBus發(fā)布和訂閱事件都是相互隔離的,即一個EventBus對象中的發(fā)布者發(fā)布事件,另一個EventBus對象中的訂閱者不會收到該訂閱。1認識EventBusEventBus類4種訂閱函數類onEvent:如果使用onEvent作為訂閱函數,那么該事件在哪個線程發(fā)布出來的,onEvent就會在這個線程中運行,也就是說發(fā)布事件和接收事件線程在同一個線程。使用這個方法時,在onEvent方法中不能執(zhí)行耗時操作,如果執(zhí)行耗時操作容易導致事件分發(fā)延遲。onEventMainThread:如果使用onEventMainThread作為訂閱函數,那么不論事件是在哪個線程中發(fā)布出來的,onEventMainThread都會在UI線程中執(zhí)行,接收事件就會在UI線程中運行,這個在Android中是非常有用的,因為在Android中只能在UI線程中跟新UI,所以在onEvnetMainThread方法中是不能執(zhí)行耗時操作的。1認識EventBusEventBus類4種訂閱函數類onEventBackground:如果使用onEventBackgrond作為訂閱函數,那么如果事件是在UI線程中發(fā)布出來的,那么onEventBackground就會在子線程中運行,如果事件本來就是子線程中發(fā)布出來的,那么onEventBackground函數直接在該子線程中執(zhí)行。onEventAsync:使用這個函數作為訂閱函數,那么無論事件在哪個線程發(fā)布,都會創(chuàng)建新的子線程在執(zhí)行onEventAsync。1認識EventBus事件事件(Event)又可稱為消息。其實就是一個對象,可以是網絡請求返回的字符串,也可以是某個開關狀態(tài)等等。事件類型(EventType)指事件所屬的Class。事件分為一般事件和Sticky事件,相對于一般事件,Sticky事件不同之處在于,當事件發(fā)布后,再有訂閱者開始訂閱該類型事件,依然能收到該類型事件最近一個Sticky事件。1使用EventBus一般流程2使用EventBus一般流程定義事件:定義一個類,繼承默認的Object即可,用于區(qū)分事件和傳輸數據。添加訂閱者:EventBus.getDefault().register(this);將所在類作為訂閱者,框架會通過反射機制獲取所有方法及其參數。訂閱者所在類可以定義以下一個或多個方法用以接收事件:publicvoidonEvent(MsgEvent1msg)publicvoidonEventMainThread(MsgEvent1msg)publicvoidonEventBackgroundThread(MsgEvent1msg)publicvoidonEventAsync(MsgEvent1msg)2使用EventBus一般流程發(fā)布者發(fā)布事件:EventBus.getDefault().post(newMsgEvent1(“主線程發(fā)的消息1”));一旦執(zhí)行了此方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論