android中Rxandroid框架使用示例

 public void onClick(View view) {
        switch (view.getId()) {
            case R.id.main_btn_a:
                Observable<String> observablea =
                        Observable.create(Subscriber -> Subscriber.onNext("atest"));
//                Observable.create(new Observable.OnSubscribe<String>() {
//                    @Override
//                    public void call(Subscriber<? super String> subscriber) {
//
//                    }
//                });
                observablea.observeOn(AndroidSchedulers.mainThread());
                observablea.subscribeOn(Schedulers.newThread());
                observablea.subscribe(new Observer<String>() {

                    @Override
                    public void onNext(String s) {
                        Log.i(TAG, "onNext------" + s);
                    }

                    @Override
                    public void onCompleted() {
                        Log.i(TAG, "onCompleted------");
                    }

                    @Override
                    public void onError(Throwable throwable) {

                    }


                });
                break;
            case R.id.main_btn_b://参数 一个一个地处理
                Observable<String> observableb = Observable.from(arr);
                //一下方法 需要连续调用,否则影响方法调用(原因:方法返回了新的对象)
                observableb.observeOn(AndroidSchedulers.mainThread()).
                        subscribeOn(Schedulers.newThread()).
                        map(new Func1<String, String>() {
                            //map映射,对数据转换
                            @Override
                            public String call(String s) {
                                Log.i(TAG, "qqq----" + s);
                                return s + "b";
                            }
                        }).
                        subscribe(s -> toast(s));
                break;
            case R.id.main_btn_c://观察者 只调用onNext()方法
                Observable<String> observablec = Observable.just("c1", "c2");
                observablec.observeOn(AndroidSchedulers.mainThread()).
                        subscribeOn(Schedulers.newThread()).
                        flatMap(new Func1<String, Observable<String>>() {
                            //flatmap 映射,把输入数组映射多个值, 依次分发
                            //reduce 简化,和flatmap相反,把多个数组的值, 合成一个数据
                            @Override
                            public Observable<String> call(String s) {
                                return Observable.just(s);
                                // return null;
                            }
                        })
                        .reduce(new Func2<String, String, String>() {
                            @Override
                            public String call(String s, String s2) {
                                return s + s2;
                            }
                        })
                        .subscribe(this::toast);
                break;
        }
    }

配置

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.0'
    testCompile 'junit:junit:4.12'
    //-------------
   compile 'io.reactivex:rxandroid:1.2.1'
    compile 'io.reactivex:rxjava:1.1.6'
}


总结

//flatmap 映射,把输入数组映射多个值, 依次分发
//reduce 简化,和flatmap相反,把多个数组的值, 合成一个数据
//多个 subscribe 按照单个subscribe顺序 的基础上调用 onNext(),onCompled()
//Observable 除了creat,from,just方法 之外的map,flatMap,reduce,subscribe等连续调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值