我正在用RxJava实现一个事件总线(RxBus).
RxBus.java
public class RxBus {
private static final String TAG = LogUtils.makeTag(RxBus.class);
private static final RxBus INSTANCE = new RxBus();
private final Subject<Object, Object> mBusSubject = new SerializedSubject<>(PublishSubject.create());
public static RxBus getInstance() {
return INSTANCE;
}
public <T> Subscription register(final Class<T> eventClass, Action1<T> onNext) {
return mBusSubject
.filter(new Func1<Object, Boolean>() {
@Override
public Boolean call(Object event) {
return event.getClass().equals(eventClass);
}
})
// .filter(event -> event.getClass().equals(eventClass))
.map(new Func1<Object, T>() {
@Override
public T call(Object obj) {
return (T) obj;
} …Run Code Online (Sandbox Code Playgroud)