RxJava2 / RxAndroid2的merge操作合并多个Observable

来源:互联网 发布:名录搜索软件 编辑:程序博客网 时间:2024/04/28 01:17
RxJava2/RxAndroid2的merge操作合并多个Observable



RxAndroid2/RxJava2的merge操作合并若干个Observable为单个可观测的Observable,形成单一线性的Observable输出结果,例如代码:

package zhangphil.app;import android.os.Bundle;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.util.Log;import java.util.concurrent.Callable;import io.reactivex.Observable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.disposables.CompositeDisposable;import io.reactivex.functions.BiFunction;import io.reactivex.observers.DisposableObserver;import io.reactivex.schedulers.Schedulers;public class MainActivity extends AppCompatActivity {    private final String TAG = getClass().getSimpleName();    private CompositeDisposable mCompositeDisposable = new CompositeDisposable();    @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        test();    }    private void test() {        DisposableObserver disposableObserver = new DisposableObserver<String>() {            @Override            public void onNext(String s) {                Log.d(TAG, "#####开始#####");                Log.d(TAG + "数据", String.valueOf(s));                Log.d(TAG, "#####结束#####");            }            @Override            public void onComplete() {            }            @Override            public void onError(Throwable e) {                Log.e(TAG, e.toString(), e);            }        };        mCompositeDisposable.add(                Observable.merge(                        getObservableA(null),                        getObservableB(null),                        getObservableA(null),                        getObservableB(null))                        .subscribeOn(Schedulers.io())                        .observeOn(AndroidSchedulers.mainThread())                        .subscribeWith(disposableObserver));    }    @Override    protected void onDestroy() {        super.onDestroy();        // 如果退出程序,就清除后台任务        mCompositeDisposable.clear();    }    private Observable<String> getObservableA(Object o) {        return Observable.fromCallable(new Callable<String>() {            @Override            public String call() throws Exception {                try {                    Thread.sleep(500); // 假设此处是耗时操作                } catch (Exception e) {                    e.printStackTrace();                }                return "A";            }        });    }    private Observable<String> getObservableB(Object o) {        return Observable.fromCallable(new Callable<String>() {            @Override            public String call() throws Exception {                try {                    Thread.sleep(1000); // 假设此处是耗时操作                } catch (Exception e) {                    e.printStackTrace();                }                return "B";            }        });    }}




代码输出结果:
05-15 13:40:41.929 12972-12972/zhangphil.app D/MainActivity: #####开始#####05-15 13:40:41.929 12972-12972/zhangphil.app D/MainActivity数据: A05-15 13:40:41.929 12972-12972/zhangphil.app D/MainActivity: #####结束#####05-15 13:40:42.930 12972-12972/zhangphil.app D/MainActivity: #####开始#####05-15 13:40:42.930 12972-12972/zhangphil.app D/MainActivity数据: B05-15 13:40:42.930 12972-12972/zhangphil.app D/MainActivity: #####结束#####05-15 13:40:43.430 12972-12972/zhangphil.app D/MainActivity: #####开始#####05-15 13:40:43.431 12972-12972/zhangphil.app D/MainActivity数据: A05-15 13:40:43.431 12972-12972/zhangphil.app D/MainActivity: #####结束#####05-15 13:40:44.431 12972-12972/zhangphil.app D/MainActivity: #####开始#####05-15 13:40:44.431 12972-12972/zhangphil.app D/MainActivity数据: B05-15 13:40:44.431 12972-12972/zhangphil.app D/MainActivity: #####结束#####

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 魔兽世界怀旧服工程学攻略 魔兽世界怀旧服工程学 北京大学化学与分子工程学院 大连理工大学建设工程学部 北大化学与分子工程学院 工程宝 西安轩宝清洗工程有限公司 工程宝使用方法图解 工程宝的使用方法 工程宝app 中铁北京工程局 中铁广州工程局 广西水电工程局 中铁北京工程局集团有限公司 山东省水利工程局有限公司 中铁上海工程局集团有限公司 中铁上海工程局本科生待遇2018 中交机电工程局有限公司 中铁北京工程局应届生待遇 工程局郑建林被停职 中国建筑第八工程局 中国建筑第五工程局有限公司 中国建筑第五工程局 中国建筑第八工程局有限公司 中国建筑第二工程局 中国建筑第四工程局有限公司 中国建筑第二工程局有限公司 中国建筑第七工程局 中国建筑第四工程局 中国建筑第七工程局有限公司 中国建筑第三工程局有限公司 中国建筑第六工程局有限公司 中铁有多少个工程局 中国水利水电第三工程局 中国水利水电第七工程局 中国水利水电第十一工程局 中国水利水电第六工程局 水利水电第十一工程局 中国水利水电第五工程局 中国水利水电第十四工程局 工程师考试时间