博客
关于我
RxJava2 / RxAndroid2操作符distinct与distinctUntilChanged去重结果异同
阅读量:206 次
发布时间:2019-02-28

本文共 6758 字,大约阅读时间需要 22 分钟。

代码例如:

package zhangphil.app; import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.util.Log; import io.reactivex.Observable;import io.reactivex.android.schedulers.AndroidSchedulers;import io.reactivex.disposables.CompositeDisposable;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();     private Integer[] test_data = {            1, 1, 2, 3, 4, 5, 2, 5, 3, 6, 4, 7, 7, 8, 9    }; // 故意设置若干重复的数据,等待去重复数据     @Override    public void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        test();    }     private void test() {        Observable
observable1 = Observable.fromArray(test_data);        Observable
observable2 = Observable.fromArray(test_data);         mCompositeDisposable.addAll(observable1                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())                .distinct()                .subscribeWith(getObserver(0)),                 observable2                        .subscribeOn(Schedulers.io())                        .observeOn(AndroidSchedulers.mainThread())                        .distinctUntilChanged()                        .subscribeWith(getObserver(1)));    }     private DisposableObserver getObserver(final int id) {        DisposableObserver disposableObserver = new DisposableObserver
() {            @Override            public void onNext(Object o) {                Log.d(id + TAG, "#####开始#####");                Log.d(id + "数据", String.valueOf(o));                Log.d(id + TAG, "#####结束#####");            }             @Override            public void onComplete() {                Log.d(id + TAG, "onComplete");            }             @Override            public void onError(Throwable e) {                Log.e(id + TAG, e.toString(), e);            }        };         return disposableObserver;    }     @Override    protected void onDestroy() {        super.onDestroy();         // 如果退出程序,就清除后台任务        mCompositeDisposable.clear();    }}

运行结果输出:

05-18 10:57:55.069 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 105-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 205-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 305-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 405-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 505-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 605-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 705-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 805-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0数据: 905-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/0MainActivity: onComplete05-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/1数据: 105-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/1数据: 205-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.070 4374-4374/zhangphil.app D/1数据: 305-18 10:57:55.070 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 405-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 505-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 205-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 505-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 305-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 605-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 405-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 705-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 805-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####开始#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1数据: 905-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: #####结束#####05-18 10:57:55.071 4374-4374/zhangphil.app D/1MainActivity: onComplete

 

转载地址:http://hugs.baihongyu.com/

你可能感兴趣的文章
Nginx学习总结(8)——Nginx服务器详解
查看>>
Nginx学习总结(9)——前端跨域问题解决
查看>>
nginx学习笔记
查看>>
nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
查看>>
nginx学习笔记003---Nginx代理配置_注意,在Windows中路径要用/
查看>>
Nginx学习笔记(一) Nginx架构
查看>>
nginx学习路线
查看>>
Nginx安装
查看>>
Nginx安装SSL模块 nginx: the “ssl” parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx
查看>>
nginx安装stream模块配置tcp/udp端口转发
查看>>
nginx安装Stream模块配置tcp/udp端口转发
查看>>
Nginx安装与常见命令
查看>>
nginx安装与配置
查看>>
【Flink】Flink 2023 Flink 到 Doris 实时写入实践
查看>>
Nginx安装及配置详解
查看>>
nginx安装并配置实现端口转发
查看>>
nginx安装配置
查看>>
Nginx实战之1.1-1.6 Nginx介绍,安装及配置文件详解
查看>>
Nginx实战经验分享:从小白到专家的成长历程!
查看>>
nginx实现二级域名转发
查看>>