retrofit+okhttp+rxjava
2016-09-01 23:50
302 查看
概念
Rx是响应式编程的意思, 本质是观察者模式, 是以被观察者(Observerable)和订阅者(Subscriber)其实就是(observer观察者)为基础的异步响应方式。
RxAndroid来源于RxJava, 在RxJava的基础上扩展了一些Android的功能。
RxAndroid最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,网络通信…)。
基本概念
被观察者: Observable
作用: 决定什么时候触发事件以及触发怎样的事件
创建方法:
Observable.just(T...) 参数为单个的
Observable.from(T[]) / Observable.from(Iterable<? extends T>) 参数为数组或Iterable
观察者: Observer
作用: 当事件触发的时候将有怎样的行为,实现类有Observer / Subscriber
订阅: subscribe
作用: 把Observable和Observer关联起来
方法:
observable.subscribe(observer);
observable.subscribe(subscriber);
事件:
onNext():普通事件
onCompleted():事件队列完结
onError(): 事件队列异常
线程控制
RxAndroid提供了一个Scheduler用来控制线程,指定某一段代码在那个线程里运行。
内置的Scheduler:
Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程。这是默认的 Scheduler。
Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。
Schedulers.io(): I/O 操作(读写文件、读写数据库、网络信息交互等)所使用的 Scheduler。行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。
Schedulers.computation(): 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。
AndroidSchedulers.mainThread(): Android专用,它指定的操作将在 Android 主线程运行。
指定线程:
Observable.subscribeOn():指定事件产生的线程
Observable.observeOn():指定订阅者所运行在的线程。或者叫做事件消费的线程。
查看案例:
//创建被观察者即Observable
Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
Call<Object> call = service.strRepos();
try {
//处理耗时的任务
Response<Object> response = call.execute();
String result = response.body().toString();
//任务完成以后,通过观察者处理事件
subscriber.onNext(result);
} catch (Exception e) {
e.printStackTrace();
subscriber.onError(e);
return;
}
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io())//处理任务执行的线程
.observeOn(AndroidSchedulers.mainThread())//处理事件执行的线程
//由观察者或者订阅者,来处理事件
.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
});
Rx是响应式编程的意思, 本质是观察者模式, 是以被观察者(Observerable)和订阅者(Subscriber)其实就是(observer观察者)为基础的异步响应方式。
RxAndroid来源于RxJava, 在RxJava的基础上扩展了一些Android的功能。
RxAndroid最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,网络通信…)。
基本概念
被观察者: Observable
作用: 决定什么时候触发事件以及触发怎样的事件
创建方法:
Observable.just(T...) 参数为单个的
Observable.from(T[]) / Observable.from(Iterable<? extends T>) 参数为数组或Iterable
观察者: Observer
作用: 当事件触发的时候将有怎样的行为,实现类有Observer / Subscriber
订阅: subscribe
作用: 把Observable和Observer关联起来
方法:
observable.subscribe(observer);
observable.subscribe(subscriber);
事件:
onNext():普通事件
onCompleted():事件队列完结
onError(): 事件队列异常
线程控制
RxAndroid提供了一个Scheduler用来控制线程,指定某一段代码在那个线程里运行。
内置的Scheduler:
Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程。这是默认的 Scheduler。
Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。
Schedulers.io(): I/O 操作(读写文件、读写数据库、网络信息交互等)所使用的 Scheduler。行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。
Schedulers.computation(): 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。
AndroidSchedulers.mainThread(): Android专用,它指定的操作将在 Android 主线程运行。
指定线程:
Observable.subscribeOn():指定事件产生的线程
Observable.observeOn():指定订阅者所运行在的线程。或者叫做事件消费的线程。
查看案例:
//创建被观察者即Observable
Observable.create(new Observable.OnSubscribe<Object>() {
@Override
public void call(Subscriber<? super Object> subscriber) {
Call<Object> call = service.strRepos();
try {
//处理耗时的任务
Response<Object> response = call.execute();
String result = response.body().toString();
//任务完成以后,通过观察者处理事件
subscriber.onNext(result);
} catch (Exception e) {
e.printStackTrace();
subscriber.onError(e);
return;
}
subscriber.onCompleted();
}
})
.subscribeOn(Schedulers.io())//处理任务执行的线程
.observeOn(AndroidSchedulers.mainThread())//处理事件执行的线程
//由观察者或者订阅者,来处理事件
.subscribe(new Subscriber<Object>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object o) {
}
});
相关文章推荐
- RxJava + Retrofit+okhttp 封装,包含对相同格式请求数据、相同格式返回数据处理,显示 Material Design 加载 dialog,文件上传下载进度展示、全局异常捕捉。
- RxJava+okhttp+Retrofit+Mvp 的封装
- RxJava+Retrofit+OkHttp深入浅出-终极封装五(数据持久化)
- Rxjava2+okhttp3+Retrofit2封装
- Retrofit+RxJava+Okhttp简单实现登录注册
- Android 封装Okhttp+Retrofit+RxJava,外加拦截器实例
- RxJava + OKhttp + Retrofit心得总结第一篇
- Android开发相关——Retrofit+RxJava+OkHttp(下)使用
- retrofit+okhttp+rxjava
- Rxjava+ReTrofit+okHttp深入浅出-终极封装
- RxJava+Retrofit+OkHttp深入浅出-终极封装六特殊篇(变种String替换Gson自由扩展)
- Rxjava+Retrofit+okhttp+mvp实现
- Rxjava+Retrofit+Okhttp(原理)
- Android Retrofit+okHttp+RxJava 第二篇------Retrofit+OkHttp
- 单列模式,RecyclerView适配器封装,BroadcastReceiver介绍,Mvp+Retrofit+rxjava+okhttp框架的梳理总结
- RxJava+Retrofit+okhttp实践结合
- RxJava+Retrofit+OkHttp深入浅出-终极封装七(异常处理)
- 初学者--Android Retrofit+RxJava+OkHttp使用post请求
- Rxjava+Retrofit+Okhttp(原理)
- 封装Okhttp+retrofit+rxjava使用MVP模式实现登录注册