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
- RxJava学习(三)
- RxJava 学习笔记(三)
- android学习之路(三)----RxJava/RxAndroid
- Rxjava学习(三线程调度器Scheduler)
- Android框架学习之RxJava(三)
- Android Rxjava学习三----线程调度
- Rxjava学习
- RxJava学习
- rxjava 学习
- RxJAVA学习
- rxJava学习
- rxjava学习
- RxJava学习
- Rxjava学习
- 学习RxJava
- Rxjava学习
- RxJava 学习
- RxJava学习
- java读取配置文件
- HDU搬寝室DP
- Android 6.0运行时权限解决办法
- hive常见错误汇总
- 清华男的大学4年
- RxJava学习(三)
- 冒泡排序
- 【杭电-oj】-1859-最小长方形
- Unity中触摸和鼠标操作的几个问题
- BZOJ-1620- [Usaco2008 Nov]Time Management 时间管理
- Javascript模块化编程
- 使用POI操作PPT实例
- iOS使用字面量语法让iOS代码更漂亮
- Paparazzi Center 讲解