RxJava学习(三)

来源:互联网 发布:淘宝有违规记录怎么办 编辑:程序博客网 时间:2024/05/03 17:14

我们看下面的代码

  Observable.just("android").map(new Func1<String, String>() {            @Override            public String call(String s) {                potentialException(s);//可能发生异常的代码                return "";            }        }).subscribe(new Subscriber<String>() {            @Override            public void onCompleted() {                Log.d(TAG, "onCompleted: ");            }            @Override            public void onError(Throwable e) {                Log.d(TAG, "onError: ");            }            @Override            public void onNext(String s) {                Log.d(TAG, "onNext: ");            }        });

代码中如果发生了异常,每一个Observerable对象在终结的时候都会调用onCompleted()或者onError()方法,所以会打印”onCompleted”或者”onError”。

这种模式有以下几个优点:

1.只要有异常发生onError()一定会被调用

这极大的简化了错误处理。只需要在一个地方处理错误即可以。

2.操作符不需要处理异常

将异常处理交给订阅者来做,Observerable的操作符调用链中一旦有一个抛出了异常,就会直接执行onError()方法。

3.你能够知道什么时候订阅者已经接收了全部的数据。

知道什么时候任务结束能够帮助简化代码的流程。

调度器

使用subscribeOn()指定被观察者代码运行的线程,使用observerOn()指定订阅者运行的线程

 myObservableServices.retrieveImage(url)                .subscribeOn(Schedulers.io())//在IO线程运行                .observeOn(AndroidSchedulers.mainThread())//在主线程运行                .subscribe(bitmap -> myImageView.setImageBitmap(bitmap));

订阅

Observable对象调用subscribe函数会返回一个Subscription对性爱那个名代表了被观察者和订阅者之前的关系

 Subscription sub =  Observable.just("android").subscribe(new Subscriber<String>() {            @Override            public void onCompleted() {                Log.d(TAG, "onCompleted: ");            }            @Override            public void onError(Throwable e) {                Log.d(TAG, "onError: ");            }            @Override            public void onNext(String s) {                Log.d(TAG, "onNext: ");            }        });

Subscription 有两个方法

这里写图片描述

第一个方法,是否取消了订阅,第二个方法,取消订阅

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天竺葵小苗徒长怎么办 天竺葵木质化后怎么办 百日菊枯萎了怎么办 长叶大岩桐骨朵烂了怎么办 种子发芽后徒长怎么办 夏天兰花僵苗怎么办 兰花僵苗了怎么办 吃了烂洋葱怎么办? 榕树盆景不发芽怎么办? 茶树花掉叶子怎么办 玉米播种后下雨怎么办 多肉长出来的枝怎么办 多肉植物爆盆后怎么办 狗眼发炎了怎么办 旅行箱密码锁打不开怎么办 梅花夏季干支了怎么办 红梅树初夏落叶怎么办 电脑主机开关坏了怎么办 iqos加热片断了怎么办 眼睛容易出泪水怎么办 盖髓后牙齿疼痛怎么办 补牙材质掉了怎么办 补牙上药后痛怎么办 儿童牙缝隙大怎么办 牙齿塞药掉了怎么办啊 补牙后按压疼痛怎么办 补过的牙齿疼怎么办 堵完牙后牙涨疼怎么办 补牙到牙神经怎么办 想换飘窗窗户 大理石面怎么办 出差三个月绿萝怎么办 口红吊兰根烂怎么办 金鱼吊兰干枝怎么办 口红吊兰不开花怎么办 单位上班座位不好怎么办 简易办公室夏天闷热怎么办 开发商不让用公积金贷款怎么办 夏天脚底开裂缝怎么办 晚上脚丫子痒怎么办丫 栀子花长白粉虱怎么办 栀子花花骨朵变黄怎么办