Android进阶学习RxJava(七)RxJava与Retrofit之双卡交火

Retrofit 为什么要和 RxJava 一起用

这么用可以更优雅的写功能
这么用是上流社会[手动狗头]
如果是新手,建议分别使用两个库做几个小项目后再实现交火,效果更好

安排

一. 导入所有依赖


    implementation 'com.squareup.retrofit2:retrofit:2.1.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.1.0'
    implementation 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'io.reactivex:rxjava:1.1.1'
    implementation 'io.reactivex:rxandroid:1.0.1'

二. 加入网络权限


使用上一篇文章的接口,更详细的请看上一篇

  • 获取所有名字

    • https://leogyy.com/study/get_name_all
  • 获取对应名字的信息

    • https://leogyy.com/study/get_name_info

三. 配置 Retrofit,比原来多一行,一定要记得加上


retrofit = new Retrofit.Builder()
        .baseUrl(Urls.Base)
        .addConverterFactory(GsonConverterFactory.create())
        .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //比原来多的一行
        .build();

四. 先写 Retrofit 接口包装类


public interface API_Protocol1 {

    @POST(Urls1.all_name)
    Call getAllName();

    @POST(Urls1.get_name_info)
    Call getNamesInfo(@Query("name") String name);

}

五. 改装为 RxJava 请求包装类


public interface API_Protocol1 {

    @POST(Urls1.all_name)
    Observable getAllName();

    @POST(Urls1.get_name_info)
    Observable getNamesInfo(@Query("name") String name);

}

六. 发起网络请求


API_Protocol1 API_protocol = retrofit.create(API_Protocol1.class);
Subscription subscribe = API_protocol.getAllName()
        .subscribeOn(Schedulers.newThread())//请求在新的线程中执行
        .observeOn(Schedulers.io())         //请求完成后在io线程中执行
        .doOnNext(new Action1() {
            @Override
            public void call(AllNameBean allName) {
                LogUtils.e(allName.getInfo());
            }
        })
        .observeOn(AndroidSchedulers.mainThread())//最后在主线程中执行
        .subscribe(new Action1() {
            @Override
            public void call(AllNameBean allNameBean) {
                LogUtils.e(allNameBean.getInfo());
            }
        });

总结

  • 优秀于阅读的代码
  • 切不可为 Rx 而强行 RX
  • 下一篇进行RxJava嵌套两层网络请求
    • 先获取所有名字
    • 再根据所有名字来获取个人信息

你可能感兴趣的:(Android进阶学习RxJava(七)RxJava与Retrofit之双卡交火)