RxJava的初步使用

1.普通订阅

 Observable<String> observable = Observable.create(new ObservableOnSubscribe<String>() {
            @Override
            public void subscribe(ObservableEmitter<String> emitter) throws Exception {
                emitter.onNext("1");
                emitter.onNext("2");
                emitter.onComplete();
                emitter.onError(new Throwable());
            }
        });

        Observer<String> observer = new Observer<String>() {

            @Override
            public void onSubscribe(Disposable d) {

            }

            @Override
            public void onNext(String s) {

            }

            @Override
            public void onError(Throwable e) {

            }

            @Override
            public void onComplete() {

            }
        };

        observable.subscribe(observer);

2.just订阅

Observable.just(1, 2, 3, 4)
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {

                    }
                });

3.fromArray订阅

Integer array[] = {1, 2, 3, 4};
Observable.fromArray(array)
                .subscribe(new Consumer<Integer>() {
                    @Override
                    public void accept(Integer integer) throws Exception {

                    }
                });

4.fromCallable订阅

 Observable.fromCallable(new Callable<String>() {
            @Override
            public String call() throws Exception {
                Log.d(TAG, "test4 call thread = " + Thread.currentThread().getName());
                return "call";
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {
                Log.d(TAG, "test4 accept thread = " + Thread.currentThread().getName());

            }
        });

5.fromFuture订阅

 FutureTask<String> futureTask = new FutureTask<>(new Callable<String>() {
            @Override
            public String call() throws Exception {
                return null;
            }
        });

        Observable.fromFuture(futureTask)
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {

                    }
                });

6.fromInterable订阅

 ArrayList<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        Observable.fromIterable(list)
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {

                    }
                });

7.defer订阅,要等订阅成功,才执行发射任务

Observable.defer(new Callable<ObservableSource<String>>() {
            @Override
            public ObservableSource<String> call() throws Exception {
                return null;
            }
        }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

8.隔确定时间去执行任务

 Observable.timer(2, TimeUnit.SECONDS).subscribe(new Consumer<Long>() {
            @Override
            public void accept(Long aLong) throws Exception {

            }
        });

9.间隔确定时间循环执行任务

Observable.interval(2, TimeUnit.SECONDS)
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {

                    }
                });

10.开始是3,自增3次,初始延长2s执行任务,后 隔2s再执行任务,输出3,4,5

Observable.intervalRange(3, 3, 2, 2, TimeUnit.SECONDS)
                .subscribe(new Consumer<Long>() {
                    @Override
                    public void accept(Long aLong) throws Exception {

                    }
                });

11.从2自增3次,输出2,3,4

  Observable.range(2, 3)
                .subscribe(new Observer<Integer>() {
                    @Override
                    public void onSubscribe(Disposable d) {

                    }

                    @Override
                    public void onNext(Integer integer) {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onComplete() {

                    }
                });

12,发射onComplete,不发送事件,发送Error事件

 Observable.empty().subscribe(new Consumer<Object>() {
            @Override
            public void accept(Object o) throws Exception {

            }
        });

        Observable.never().subscribe(new Consumer<Object>() {
            @Override
            public void accept(Object o) throws Exception {

            }
        });

        Observable.error(new NullPointerException()).subscribe(new Consumer<Object>() {
            @Override
            public void accept(Object o) throws Exception {

            }
        });

13.map转换

 Observable.just(1,3,4)
                .map(new Function<Integer, String>() {
                    @Override
                    public String apply(Integer integer) throws Exception {
                        return String.valueOf(integer);
                    }
                }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

14.flatMap转换

 ArrayList<Student> list = new ArrayList<>();
        list.add(new Student().setCourse("13","20"));
        list.add(new Student().setCourse("23","30"));
        list.add(new Student().setCourse("33","40"));
        Observable.fromIterable(list)
                .flatMap(new Function<Student, ObservableSource<String>>() {
                    @Override
                    public ObservableSource<String> apply(Student student) throws Exception {
                        return Observable.fromIterable(student.getCourese());
                    }
                }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

  class Student{

        private List courses;

        public Student setCourse(String math,String english) {
            courses.add(math);
            courses.add(english);
            return this;
        }

        public List getCourese() {
            return courses;
        }

    }

15.concatMap,和faltMap效果一样,但是有序等接受发射事件

  ArrayList<Student> list = new ArrayList<>();
        list.add(new Student().setCourse("13","20"));
        list.add(new Student().setCourse("23","30"));
        list.add(new Student().setCourse("33","40"));
        Observable.fromIterable(list)
                .concatMap(new Function<Student, ObservableSource<String>>() {
                    @Override
                    public ObservableSource<String> apply(Student student) throws Exception {
                        return Observable.fromIterable(student.getCourese());
                    }
                }).subscribe(new Consumer<String>() {
            @Override
            public void accept(String s) throws Exception {

            }
        });

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值