博客
关于我
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/

你可能感兴趣的文章
Memcached:Node.js 高性能缓存解决方案
查看>>
memcache、redis原理对比
查看>>
memset初始化高维数组为-1/0
查看>>
Metasploit CGI网关接口渗透测试实战
查看>>
Metasploit Web服务器渗透测试实战
查看>>
MFC模态对话框和非模态对话框
查看>>
Moment.js常见用法总结
查看>>
MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
查看>>
mxGraph改变图形大小重置overlay位置
查看>>
MongoDB可视化客户端管理工具之NoSQLbooster4mongo
查看>>
Mongodb学习总结(1)——常用NoSql数据库比较
查看>>
MongoDB学习笔记(8)--索引及优化索引
查看>>
mongodb定时备份数据库
查看>>
mppt算法详解-ChatGPT4o作答
查看>>
mpvue的使用(一)必要的开发环境
查看>>
MQ 重复消费如何解决?
查看>>
mqtt broker服务端
查看>>
MQTT 保留消息
查看>>
MQTT 持久会话与 Clean Session 详解
查看>>
MQTT工作笔记0007---剩余长度
查看>>