標籤:build 建造者 事件調度 return producer text produce strong register
No1:
EventBus三要素:
1)Event:事件
2)Subscriber:事件訂閱者
3)Publisher:事件發行者
No2:
EventBus的4種ThreadMode(執行緒模式):
1)POSTING(預設):該事件是在哪個線程發布出來的,事件處理函數就會在哪個線程中運行
2)MAIN:事件的處理會在UI線程中執行
3)BACKGROUND:在新線程或者發布的子線程中執行,禁止進行UI更新操作
4)ASYNC:在建立的子線程中執行,禁止進行UI更新操作
No3:
EventBus源碼解析
EventBus.getDefault()->(單例模式)
new EventBus()->
EventBus(EventBusBuilder)->(建造者模式)
register->
SubscriberMethodFinder.findSubscriberMethods->findUsingInfo->getSubscriberInfo->findUsingReflectionInSingleClass->
subscribe->
...
No4:
otto使用
compile ‘com.squareup:otto:1.3.8‘
public class BusData{ public String message; public BusData(String message){ this.message = message; } public String getMessage(){ return message; } public void setMessage(String message){ this.message = message; }}
public class OttoBus extends Bus{ private volatile static OttoBus bus; private OttoBus(){} public static OttoBus getInstance(){ if(bus == null){ synchronized(OttoBus.class){ if(bus==null){ bus = new OttoBus(); } } } return bus; }}
Bus bus = OttoBus.getInstance();bus.register(this);bus.unregister(this);@Subscribepublic void setContent(BusData data){ tv_message.setText(data.getMessage());}OttoBus.getInstance().post(new BusData("劉望舒的部落格更新了"));
No5:
Otto主要類的功能
1)Produce、Subscribe:發行者和訂閱者註解類
2)Bus:事件匯流排類,用來註冊和取消註冊,維護髮布-訂閱模型,並處理事件調度分發
3)HandlerFinder、AnnotatedHandlerFinder:用來尋找發行者和訂閱者
4)EventProducer、EventHandler:分別封裝發行者和訂閱者的資料結構
《Android進階之光》--事件匯流排