RxJava+Retrofit 在專案中的使用
阿新 • • 發佈:2018-12-04
簡介:RxJava是一個基於事件流,實現非同步操作的庫
使用方式:基於事件流的鏈式呼叫
原理:基於一種擴充套件的觀察者模式
Observable(被觀察者)、Observer(觀察者)、subscribe(訂閱)
在專案中的使用
一、在gradle中新增如下配置
implementation 'com.squareup.retrofit2:retrofit:2.1.0' implementation 'com.squareup.retrofit2:converter-gson:2.1.0' implementation 'io.reactivex:rxjava:1.2.6' implementation 'io.reactivex:rxandroid:1.2.1' implementation 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
二、Retrofit介面定義,如下
public interface RetrofitInterface {
@FormUrlEncoded
@POST("")
Observable<TheBean> getData(
@Field("id")String theId,
@Field("page")String thePage);
}
三、建立APIService例項,如下
public class APIService { private RetrofitInterface retrofitInterface; private static APIService apiService; //獲取APIService的單例 public static APIService getInstence() { if (apiService == null) { synchronized (APIService.class) { if (apiService == null) { apiService = new APIService(); } } } return apiService; } //封裝配置API public RetrofitInterface getDailyService() { if (retrofitInterface == null) { Retrofit retrofit = new Retrofit.Builder() .baseUrl(ConstantsData.URL) .addConverterFactory(GsonConverterFactory.create()) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); //建立完成 retrofitInterface = retrofit.create(RetrofitInterface.class); } return retrofitInterface; } }
四、使用,如下
APIService.getInstence().getDailyService().getData("1", "1").subscribeOn(Schedulers.io())//在子執行緒請求資料 .observeOn(Schedulers.io()) //請求完成後子執行緒中執行 .doOnNext(new Action1<TheBean>() { @Override public void call(TheBean theBean) { //例如儲存資料的操作 } }) .observeOn(AndroidSchedulers.mainThread())//在主執行緒顯示資料 .subscribe(new Subscriber<TheBean>() { @Override public void onCompleted() { //請求完成 } @Override public void onError(Throwable throwable) { //請求錯誤 } @Override public void onNext(TheBean theBean) { //請求成功,在此處理 } });