RxAndroid是RxJava的一个变体,它们都属于函数响应式编程
Rx表示响应式编程, 使用观察者模式, 以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用异步线程处理耗时任务, RxAndroid是比较优雅的选择.
RxAndroid有什么作用呢?
1、函数响应式编程
2、异步
3、事件驱动(事件作为可观察序列)
4、基于观察者模式
5、组合式
6、专门出错处理
7、适用于处理并发问题
首先需要添加依赖:他们都源于reactivex
compile ‘io.reactivex:rxjava:1.3.0’
compile ‘io.reactivex:rxandroid:1.0.1’
下面来说下步骤:
//1、创建一个观察者 oberver(事件订阅者)
//2、创建一个被观察者实例 Observable(被观察者)
//3、让被观察者去添加订阅者 Subscription(事件订阅者)
//1 创建一个观察者
observer = new Observer<WaresBean>() {
@Override
public void onCompleted() {
//控制进度条
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(WaresBean s) {
//做获取数据的处理
Log.e(TAG, "onNext: "+s.getCopyright() );
}
};
//2创建一个被观察者
observable = Observable.create(new Observable.OnSubscribe<WaresBean>(){
@Override
public void call(final Subscriber<? super WaresBean> subscriber) {
//添加数据
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
RetrofitUtil.getInstance().getWaresHot1(new retrofit2.Callback<WaresBean>() {
@Override
public void onResponse(Call<WaresBean> call, Response<WaresBean> response) {
WaresBean body = response.body();
subscriber.onNext(body);
}
@Override
public void onFailure(Call<WaresBean> call, Throwable t) {
}
});
}
});
}
});
//3添加订阅者,联网获取数据
observable.subscribeOn(Schedulers.io());//设置在子线程完成 subscribe 操作
observable.observeOn(AndroidSchedulers.mainThread());//设置在哪完成observe操作
observable.subscribe(observer);
}
总结:这样使代码变得更简洁。。。