EventBus基礎用法

2021-08-20 18:18:01 字數 1022 閱讀 9913

1、eventbus三要素

event:事件。可以是任意型別的物件

subscriber:事件訂閱者。在eventbus3.0之前訊息吹了的方法只能限定於onevent,oneventmainthread,oneventbackgroundthread,和oneventasync,它們分別代表4種執行緒模型。而在3.0之後,事件處理的方法可以隨便取名,但是需要新增乙個註解@subscribe,並且要指定執行緒模型(預設是posting)

publisher:事件發布者。可以在任意執行緒任意位置發布事件,直接呼叫eventbus到的post方法,根據post函式引數的型別,會自動呼叫訂閱相應型別事件的函式。

2、eventbus的4種執行緒模型

posting: 該事件在哪個執行緒發布出來,事件處理函式就在哪個執行緒執行

main:該事件無論在哪個執行緒發布出來,事件處理函式都會在主線程中執行,所以時間處理的時間不能太長,長了會導致anr.

background:如果時間在ui執行緒中發布出來,那麼該事件處理函式就會在新的執行緒中執行;如果事件本來就是在子執行緒中發布,那麼該事件處理函式直接在發布事件的執行緒中執行。

async:無論該事件在哪個執行緒發布,該事件處理函式都會在新建的子執行緒中執行。

3、使用

// 自定義事件類

public

class messageevent

// 註冊

eventbus.getdefault().register(this);

// 傳送事件

eventbus.getdefault().post(messageevent);

// 處理事件

@subscribe (threadmode = threadmode.main,sticky = false, priority = 0)

public

void

***(messageevent messageevent)

4、普通事件:先訂閱再發布

黏性事件:先發布再訂閱

EventBus基本理解

eventbus是乙個android端優化的publish subscribe訊息匯流排,簡化了應用程式內各元件間 元件與後台執行緒間的通訊。比如請求網路,等網路返回時通過handler或broadcast通知ui,兩個fragment之間需要通過listener通訊,這些需求都可以通過eventb...

EventBus上車指南

eventbus是針對安卓優化的 發布 訂閱事件匯流排 主要功能是替代intent,handler,broadcast在fragment,activity,service,執行緒之間傳遞訊息.優點是開銷小,更優雅。以及將傳送者和接收者解耦。1.同一元件內傳送和接收事件 activity中 2.事件傳...

EventBus簡單實用

本人使用eventbus是在baseacitivity中的oncreate方法中註冊,就不需要一直註冊和取消註冊。oncreate 方法中註冊 eventbus.getdefault register this 在ondestroy 方法中取消註冊 eventbus.getdefault unreg...