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);
}
總結:這樣使代碼變得更簡潔。。。