Rxjava操作符的基本使用

来源:互联网 发布:计算机模块考试软件 编辑:程序博客网 时间:2024/05/18 21:40

from将其他种类的对象和数据类型转换为Observable

Integer[] in={1,2,3,4,5,6,7,8,9,10,11,222};//将其他种类的对象和数据类型转换为Observable        //map讲Integer转化成String        Observable.from(in).map(new Func1<Integer, String>() {            @Override            public String call(Integer integer) {                Log.i("dddddd",integer.toString());                return integer.toString();            }        }).subscribe(new Observer<String>() {            @Override            public void onCompleted() {                Log.i("ddddddonCompleted","onCompleted");            }            @Override            public void onError(Throwable e) {                Log.i("ddddddoonError","onError");            }            @Override            public void onNext(String s) {                Log.i("ddddddonNext","onNext");            }        });

这里写图片描述

range从一开始显示10个数据

Observable.range(1,10).subscribe(new Subscriber<Integer>() {            @Override            public void onCompleted() {            }            @Override            public void onError(Throwable e) {            }            @Override            public void onNext(Integer integer) {                Log.i("ddddddonNext1-10::",integer.toString());            }        });

这里写图片描述

filter过滤大于8的数据

Observable.from(in).map(new Func1<Integer, Integer>() {            @Override            public Integer call(Integer integer) {                Log.i("dddddd",integer.toString());                return integer;            }        }).filter(new Func1<Integer, Boolean>() {            @Override            public Boolean call(Integer integer) {                return integer>8;            }        }).subscribe(new Subscriber<Integer>() {            @Override            public void onCompleted() {            }            @Override            public void onError(Throwable e) {            }            @Override            public void onNext(Integer integer) {                Log.i("ddddddfilteronNext","onNext"+integer);            }        });

这里写图片描述

interval延迟执行数据

final int count_time = 60; //总时间/*常用的颗粒度 TimeUnit.DAYS          //天 TimeUnit.HOURS         //小时 TimeUnit.MINUTES       //分钟 TimeUnit.SECONDS       //秒 TimeUnit.MILLISECONDS  //毫秒  1、时间颗粒度转换  public long toMillis(long d)    //转化成毫秒  public long toSeconds(long d)  //转化成秒  public long toMinutes(long d)  //转化成分钟  public long toHours(long d)    //转化成小时  public long toDays(long d)     //转化天*/Observable.interval(0, 1, TimeUnit.SECONDS) //0延迟  每隔1秒触发                .subscribeOn(Schedulers.io())                .observeOn(AndroidSchedulers.mainThread())//操作UI主要在UI线程                .take(count_time + 1) //设置循环次数                .map(new Func1<Long, Long>() {                    @Override                    public Long call(Long integer) {                        return count_time - integer;                    }                }) //从60-1                .doOnSubscribe(new Action0() {                    @Override                    public void call() {                        log.setClickable(false);                    }                }) //执行过程中按键为不可点击状态                .subscribe(new Observer<Long>() {                    @Override                    public void onCompleted() {//循环结束调用此方法                        log.setText(" 哈哈哈哈");                    }                    @Override                    public void onError(Throwable e) {                        e.printStackTrace();                    }                    @Override                    public void onNext(Long aLong) {//每隔一秒执行                        log.setText("重获(" + aLong + ")");                    }                });

Create从头开始创建一个Observable

create方法的函数中检查观察者的isUnsubscribed状态,以便在没有观察者的时候,让你的Observable停止发射数据或者做昂贵的运算

Observable.create(new Observable.OnSubscribe<Integer>() {            @Override public void call(Subscriber<? super Integer> subscriber) {                if(!subscriber.isUnsubscribed()){                    for(int i= 1;i<=9;i++){                        subscriber.onNext(i);                    }                    subscriber.onCompleted();                }            }        }).subscribe(new Subscriber<Integer>() {            @Override public void onCompleted() {                Log.i("ddddcreate","onCompleted");            }            @Override public void onError(Throwable e) {            }            @Override public void onNext(Integer integer) {                Log.i("ddddcreate","onNext:::"+integer);            }        });

这里写图片描述

记得添加添加依赖

compile ‘com.squareup.retrofit2:adapter-rxjava:2.3.0’
compile ‘io.reactivex:rxandroid:1.2.1’