RxJava2 / RxAndroid2操作符ofType:根据类型选择输出结果

简介: RxJava2 / RxAndroid2操作符ofType:根据类型选择输出结果例如:package zhangphil.

RxJava2 / RxAndroid2操作符ofType:根据类型选择输出结果


例如:

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 Object[] test_data = {
            1, "zhang", 2, 3, "phil", 5, 5, 6, 7, 7, 8, 9
    }; // 故意设置若干重复的数据,等待去重复数据

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        test();
    }

    private void test() {
        DisposableObserver disposableObserver = new DisposableObserver<Object>() {
            @Override
            public void onNext(Object o) {
                Log.d(TAG, "#####开始#####");
                Log.d("数据", String.valueOf(o));
                Log.d(TAG, "#####结束#####");
            }

            @Override
            public void onComplete() {
                Log.d(TAG, "onComplete");
            }

            @Override
            public void onError(Throwable e) {
                Log.e(TAG, e.toString(), e);
            }
        };

        Observable<Object> observable = Observable.fromArray(test_data);

        mCompositeDisposable.add(observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .ofType(String.class) //只显示字符串类型
                .subscribeWith(disposableObserver));
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();

        // 如果退出程序,就清除后台任务
        mCompositeDisposable.clear();
    }
}



输出:

05-18 10:28:43.170 14762-14762/zhangphil.app D/MainActivity: #####开始#####
05-18 10:28:43.170 14762-14762/zhangphil.app D/数据: zhang
05-18 10:28:43.170 14762-14762/zhangphil.app D/MainActivity: #####结束#####
05-18 10:28:43.170 14762-14762/zhangphil.app D/MainActivity: #####开始#####
05-18 10:28:43.170 14762-14762/zhangphil.app D/数据: phil
05-18 10:28:43.170 14762-14762/zhangphil.app D/MainActivity: #####结束#####
05-18 10:28:43.171 14762-14762/zhangphil.app D/MainActivity: onComplete


结果如预期,只输出字符串类型的数据。

相关文章
|
11月前
|
存储 供应链 监控
如何有效防止欺诈性交易
如何有效防止欺诈性交易
|
弹性计算 大数据 云栖大会
请查收!2024云栖大会弹性计算邀请函
请查收!2024云栖大会弹性计算邀请函
请查收!2024云栖大会弹性计算邀请函
|
存储 JavaScript 前端开发
django -- cookie和session (一)
django -- cookie和session
|
Web App开发 测试技术
优化循环的方法-循环展开
优化循环的方法-循环展开
223 0
|
SQL 关系型数据库 MySQL
事务的四大特性(ACID)|学习笔记
快速学习事务的四大特性(ACID)
100 0
事务的四大特性(ACID)|学习笔记
|
开发框架 JavaScript 前端开发
Java反射机制
Java反射机制 Java反射机制的概述 理解Class类并获取Class实列 类的加载与ClassLoader Class一些常用的方法: 获取Class类的三种方法 1知道具体的类,通过类的class的属性获取,该方法最安全可靠,性能最高 2.知道一个类的实例,调用实例的getClass()方法获取Class对象 3知道一个类的全名,并且该类在类路径下,可通过Class类的静态方法forName()获取,可能抛出 ClassNotFoundException异常
242 0
Java反射机制
揭开this的神秘面纱-方法篇 | 带你学《Java面向对象编程》之八
本节结合几组实例与实际案例介绍了使用this进行本类构造方法与普通方法的调用方法与注意事项。
|
Java 算法 C++
基因组survey
基因组survey 在组装基因组之前一定要先对要组装的物种有一个大致的了解,判断其复杂程度, 标准如下 基因组大小:基因组越大,测序花的钱越多 简单基因组: 杂合度低于0.5%, GC含量在35%~65%, 重复序列低于50% 二倍体普通基因组: 杂合度在0.5%~1.2%中间,重复序列低于50%。
1774 0