目前大多數開發者使用EventBus或者Otto作為事件總線通信庫,對于RxJava使用者來說,RxJava也可以輕松實現事件總線,因為它們都依據于觀察者模式。
不多說,上代碼
/*** RxBus* Created by YoKeyword on 2015/6/17.*/public class RxBus { private static volatile RxBus defaultInstance; private final Subject<Object, Object> bus; // PublishSubject只會把在訂閱發生的時間點之后來自原始Observable的數據發射給觀察者 public RxBus() { bus = new SerializedSubject<>(PublishSubject.create()); } // 單例RxBus public static RxBus getDefault() { if (defaultInstance == null) { synchronized (RxBus.class) { if (defaultInstance == null) { defaultInstance = new RxBus(); } } } return defaultInstance ; } // 發送一個新的事件 public void post (Object o) { bus.onNext(o); } // 根據傳遞的 eventType 類型返回特定類型(eventType)的 被觀察者 public <T> Observable<T> toObservable (Class<T> eventType) { return bus.ofType(eventType);// 這里感謝小
主站蜘蛛池模板:
太仆寺旗|
阿瓦提县|
安丘市|
安溪县|
大名县|
榕江县|
尚义县|
临武县|
新昌县|
上高县|
香河县|
浏阳市|
柏乡县|
曲沃县|
江西省|
蓝山县|
潜江市|
浦东新区|
仁怀市|
巩义市|
邵武市|
抚宁县|
平遥县|
来宾市|
柘荣县|
乳山市|
西丰县|
昌都县|
枞阳县|
淮南市|
玛沁县|
丰镇市|
衡山县|
盐源县|
保康县|
文化|
荣昌县|
镶黄旗|
正安县|
鄂伦春自治旗|
南溪县|