RxAndroid+Retrofit在項目中的使用姿勢是這樣的

一、簡介:

RxAndroid+Retrofit已經成了當前進行訪問網絡數據的標配了,今天就來講講在項目中這種組合拳的使用姿勢

*1、RxJava和Retrofit結合的時候,首先在gradle中添加如下配置,先把我的gradle文件拿出來給大家瞧瞧:8

    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'
    compile 'io.reactivex:rxjava:1.2.6'
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'

2、Retrofit的接口中的定義如下:

public interface RetrofitInterface {

    //獲取“首頁商家店鋪”的數據
    @GET(mallseller/getMallForUser.htm)
    Observable<MallDataBean> getMallDataBean(@QueryMap Map<String, Object> params);
}

3、創建APIService的實例,代碼如下:

    private static Retrofit retrofit;
    private static RetrofitInterface retrofitInterface;

    private static void initRetrofit(String baseUrl){
        retrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        //創建Retrofit接口對象
        retrofitInterface =  retrofit.create(RetrofitInterface.class); 
    }

注意,這里和我們在一般場景下使用Retrofit有一個區別,那就是多了addCallAdapterFactory這個方法,這里我們添加的RxJava的適配工廠。

4、然后我們就可以調用RetrofitInterface 中的方法來訪問網絡數據了,如下:

Observable observable = retrofitInterface.getMallDataBean(params);
//在子線程訪問數據  
observable .subscribeOn(Schedulers.io())  
//在主線程顯示數據  
.observeOn(AndroidSchedulers.mainThread())  
.subscribe(new Subscriber<ClassfyBean>() {  
    @Override  
    public void onCompleted() {  
  
    }  
  
    @Override  
    public void onError(Throwable throwable) {  
  
    }  
  
    @Override  
    public void onNext(MallDataBean mallDataBean) {  
         //你獲取到的數據進行處理,而且這已經是在主線程中了哦,不用什么Handler之類的了
    }  
});  



最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容