EventBus及Rxjava一些笔记

RxJava

1、BehaviorSubject

BehaviorSubject<Integer> behaviorSubject = BehaviorSubject.create();
        behaviorSubject.onNext(1);
        behaviorSubject.onNext(2);
        behaviorSubject.subscribe(new Consumer<Integer>() {
            @Override
            public void accept(Integer integer) throws Exception {
                Timber.tag(TAG).d("running num : " + integer);
            }
        });
        behaviorSubject.onNext(3);
        behaviorSubject.onNext(4);
  • 返回结果
onstart
running num : 2
running num : 3
running num : 4

2、compose

compose操作符是用来对Observable进行转换操作的,并不破坏 调用链。

compose() is the only way to get the original Observable from the stream. Therefore, operators that affect the whole stream (like subscribeOn() and observeOn()) need to use compose().

compose()是唯一获取原始Observable的方式,所以一些影响整个流的操作需要用compose()。这也是compose()与flatMap()的最大区别。

public final <R> Observable<R> compose(
ObservableTransformer<? super T, ? extends R> composer)

public interface ObservableTransformer<Upstream, Downstream> {
    /**
     * Applies a function to the upstream Observable and returns an ObservableSource with
     * optionally different element type.
     * @param upstream the upstream Observable instance
     * @return the transformed ObservableSource instance
     */
    @NonNull
    ObservableSource<Downstream> apply(
    @NonNull Observable<Upstream> upstream);
    //upstream就是那个原始的Observable。
    //flatMap是新建(new出来)的Observable。
}

EventBus

1、EventBus in 3 steps


  1. Define events:

    public static class MessageEvent { /* Additional fields if needed */ }
  2. Prepare subscribers:
    Declare and annotate your subscribing method, optionally specify a thread mode:

    @Subscribe(threadMode = ThreadMode.MAIN)  
    public void onMessageEvent(MessageEvent event) {
    /* Do something */
    };

    Register and unregister your subscriber. For example on Android, activities and fragments should usually register according to their life cycle:

    @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }
    
    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    }
  3. Post events:

    EventBus.getDefault().post(new MessageEvent());

2、EventBus的post将通知所有注册者

如果同时有两个类注册了EventBus,并都没有unregister,那么post将通知/触发这两个类中所有的@Subscribe注解的方法。

Rxjava实现观察者模式

在项目中自定义了Observable和Observer,同时也引入了Rxjava,考虑到Rxjava就是基于观察者模式,那么传统的自定义观察者模式是否可以用Rxjava实现呢?

Multi-Modules架构模式

Module分library和application等,设计multi-module架构模式,并保证每个application module可独立运行,探索楚ARouter之外的module间跳转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值