Retrofit2和RxJava配合使用Demo

Posted DevLi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Retrofit2和RxJava配合使用Demo相关的知识,希望对你有一定的参考价值。

和Retrofit2单独使用有一些区别

首先,同样写个interface,这里是GitHubService.java,我们这次要实现获取官方提供的测试接口的数据

1 public interface GitHubService {
2     @GET("repos/{owner}/{repo}/contributors")
3     Observable<List<Contributor>> getUserInfoByObservable(@Path("owner") String owner, @Path("repo") String repo);
4 }

注意,上边的区别,retrofit2单独使用的时候是Call<List<Contributor>>,而rx使用的是Observable,可观察者对象

再写一个获取数据的工具类ParseUtils.java

1 public class ParseUtils {
2 
3         public static GitHubService gitHubService = new Retrofit.Builder().baseUrl("https://api.github.com/")
4                 .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
5                 .addConverterFactory(GsonConverterFactory.create()).build().create(GitHubService.class);
6 
7 }

这里也有一些区别,retrofit2单独使用时不需要addCallAdapterFactory(RxJavaCallAdapterFactory.create()),这里使用rx,如果没有这句话,会报Unable to create call adapter for rx.Observable错误

接下来在activity中使用

1 ParseUtils.gitHubService.getUserInfoByObservable("square", "retrofit")
2                 .subscribeOn(Schedulers.newThread())
3                 .observeOn(androidSchedulers.mainThread())
4                 .subscribe(new Action1<List<Contributor>>() {
5                     @Override
6                     public void call(List<Contributor> contributors) {
7                         //do somthing
8                     }
9                 });

我在上一篇记录retrofit2使用时写了demo,以后可以对照

以上是关于Retrofit2和RxJava配合使用Demo的主要内容,如果未能解决你的问题,请参考以下文章

Android RxJava2+Retrofit2单文件下载监听进度封装

retrofit2+MVP+rxjava2+rxlifecycle2 为啥无法解决内存泄露

Mvp+Rxjava+Retrofit2.0+Okhttp完善版

RxJava2+Retrofit2+RxLifecycle2使用MVP模式构建项目

将 proguard 与 retrofit2 和 rxjava 一起使用时出错

retrofit2+rxjava+mockserver使用和理解