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...