Manba陪你学AndroidAndroid技术知识Android开发

RxAndroid+Retrofit在项目中的使用姿势是这样的

2017-03-27  本文已影响478人  唠嗑008
一、简介:

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之类的了
    }  
});  



上一篇下一篇

猜你喜欢

热点阅读