android中Rxandroid框架使用示例

来源:互联网 发布:阿尔法淘宝怎么样 编辑:程序博客网 时间:2024/05/22 00:32
 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等连续调用

0 0