Skip to content

Rxjava Operator and dispatcher/ Rxjava 操作符和调度器

Notifications You must be signed in to change notification settings

haibuzou/RxjavaBook

Repository files navigation

RxjavaBook

Rxjava 有丰富的操作符,RxJava Essential 这本书对所有的操作符常用方法以及调度器 都有全面的介绍,可惜的是下载不到源码。 所谓自己动手丰衣足食,这个工程就是来自与RxJava Essential, 顺带学习了

MVP

采用MVP+Rxjava的架构的RxjavaBook,所有关于操作符的关键类 RxPresenter。 添加了一点个人理解的注释

 /**
     * DistinctUntilsChanged 操作符
     * 并不是单纯的整体过滤重复的数据
     * <p/>
     * A...B...A...A..........B...
     * |   |              |
     * |   |             |
     * A...B...A............B
     * <p/>
     * 忽略掉重复的值并且在温度确实改变时才想得到通知
     */
    public Observable<AppInfo> getDistinctUntilsChangedAppInfo() {
        return getAppInfo().take(3).repeat(3).distinctUntilChanged();
    }
    
    
    /**
     * flatmap 操作符
     * 同样是转换 但是flatmap可以将数据转换Observable,flatmap 可以处理更加复杂的数据情况
     * 下面的例子比较简单。只是为了展示 faltmap的写法
     * 想象一下 如果这个getAppInfo()返回的是 Observable<List<AppInfo>> flatMap就可以把它改成 Observable<AppInfo>
     * <p/>
     * A......B..D
     * <p/>
     * flatMap --> A --> A....C
     * <p/>
     * A....C..B..D..C..C
     * 最重要的一点 它允许交叉。正如上图所示,这意味着flatMap()不能够保证在最终生成的Observable中源Observables确切的发射顺序。
     */
    public void getAppIconWithFlatMap() {
        final List<AppInfo> appInfoList = new ArrayList<>();
        getAppInfo()
                .flatMap(new Func1<AppInfo, Observable<Drawable>>() {
                    @Override
                    public Observable<Drawable> call(AppInfo appInfo) {
                        return Observable.just(appInfo.mIcon);
                    }
                })
                .subscribe(new Observer<Drawable>() {
                    @Override
                    public void onCompleted() {
                        rxView.setListItem(appInfoList);
                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(Drawable drawable) {
                        AppInfo appInfo = new AppInfo("flatmap app", drawable);
                        appInfoList.add(appInfo);
                    }
                });
    }

   .....

About

Rxjava Operator and dispatcher/ Rxjava 操作符和调度器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages