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

你可能感兴趣的文章
mt-datetime-picker type="date" 时间格式 bug
查看>>
myeclipse的新建severlet不见解决方法
查看>>
MyEclipse设置当前行背景颜色、选中单词前景色、背景色
查看>>
Mtab书签导航程序 LinkStore/getIcon SQL注入漏洞复现
查看>>
myeclipse配置springmvc教程
查看>>
MyEclipse配置SVN
查看>>
MTCNN 人脸检测
查看>>
MyEcplise中SpringBoot怎样定制启动banner?
查看>>
MyPython
查看>>
MTD技术介绍
查看>>
MySQL
查看>>
MySQL
查看>>
mysql
查看>>
MTK Android 如何获取系统权限
查看>>
MySQL - 4种基本索引、聚簇索引和非聚索引、索引失效情况、SQL 优化
查看>>
MySQL - ERROR 1406
查看>>
mysql - 视图
查看>>
MySQL - 解读MySQL事务与锁机制
查看>>
MTTR、MTBF、MTTF的大白话理解
查看>>
mt_rand
查看>>