您的位置:首页 > 移动开发 > Android开发

android rxandroid异步消息处理机制

2017-08-23 09:59 741 查看
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(
4000
) );
}
};


//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);

}


总结:这样使代码变得更简洁。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息