EventBus3 使用方法

2021-07-28 04:06:14 字數 3487 閱讀 5660

eventbus 是乙個基於觀察者模式的事件發布/訂閱框架

基本用法

粘性事件 sticky event

配置非同步執行器 asyncexecutor

github

documentation

eventbus

老司機教你 「飆」 eventbus 3

android }}

}dependencies

// 設定為預設屬性

eventbus.builder().addindex(new myeventbusindex()).installdefaulteventbus();

eventbus eventbus = eventbus.getdefault(); // 設定完後,使用預設即可

// 或者在使用時再設定

eventbus eventbus = eventbus.builder().addindex(new myeventbusindex()).build();

// 如果庫中有eventbusindex,需要多次新增

eventbus eventbus = eventbus.builder()

.addindex(new myeventbuslibindex())

.build();

-keepattributes *annotation*

-keepclassmembers class **

-keep enum org.greenrobot.eventbus.threadmode

# only required if you use asyncexecutor

-keepclassmembers class * extends

org.greenrobot.eventbus.util.throwablefailureevent

public

class

messageevent

}

訂閱之前需要註冊,activities和fragments一般在 onstart/onstop 中呼叫

@override

public

void

onstart()

@override

public

void

onstop()

四種執行緒模式,threadmode:posting/main/background/async

// 在傳送事件的執行緒呼叫,同步處理

@subscribe

public

void

handlesomethingelse(someotherevent event)

// 主線程呼叫

@subscribe(threadmode = threadmode.main)

public

void

onmessageevent(messageevent event)

// 子執行緒呼叫,非主線程則直接呼叫,主線程則開單執行緒呼叫

@subscribe(threadmode = threadmode.background)

public

void

onmessage(messageevent event)

// 非同步呼叫,使用執行緒池在不同的執行緒呼叫

@subscribe(threadmode = threadmode.async)

public

void

onmessage(messageevent event)

任意地方傳送事件,匹配的事件訂閱方法會接收事件

eventbus.getdefault().post(new messageevent("hello everyone!"));
@subscribe(priority = 1); // 優先順序,預設為0

public

void

onevent(messageevent event)

事件發出後一直儲存在記憶體中,訂閱方法在之後註冊也能完成訂閱

eventbus.getdefault().poststicky(new messageevent("hello everyone!"));

@override

public

void

onstart()

@subscribe(sticky = true, threadmode = threadmode.main)

public

void

onevent(messageevent event)

@override

public

void

onstop()

messageevent stickyevent = eventbus.getdefault().getstickyevent(messageevent.class);

if(stickyevent != null)

messageevent stickyevent = eventbus.getdefault().removestickyevent(messageevent.class);

if(stickyevent != null)

eventbus eventbus = eventbus.builder()

.lognosubscribermessages(false)

.sendnosubscriberevent(false)

.build();

eventbus eventbus = eventbus.builder().throwsubscriberexception(true).build();
eventbus.builder().throwsubscriberexception(buildconfig.debug).installdefaulteventbus();
.execute(new asyncexecutor.runnableex() });

}

@subscribe(threadmode = threadmode.main)

public

void

handleloginevent(loggedinevent event)

@subscribe(threadmode = threadmode.main)

public

void

handlefailureevent(throwablefailureevent event)

Swiper 3D flow使用方法

1 如需使用swiper的3d切換首先載入3d flow外掛程式 js和css link rel stylesheet href css idangerous.swiper.css link rel stylesheet href css idangerous.swiper.3dflow.css s...

GNS3 SecureCRT使用方法

我們需要在gns3中修改一行引數,以便啟動securecrt 在edit perfermence general terminal command 網上有的說是在edit perfermence dynamips terminal command中,可能是版本不同 裡面預設是 start telne...

callback(3) 使用方法覆蓋

針對callback 1 的需求,我們還可以使用第三種方式來解決,使用virtual的方法。只是客戶端呼叫的時候,必須要自己重新乙個car類。如下 其實第一種和第二種都是has a解決方案 這一種是 is a的解決方案 car using system using system.collection...