聊聊对 RxJava 与 Retrofit 的封装

645 查看

目前RxJava和Retrofit结合使用已经是非常普遍了,网上关于这方面的文章也是层出不穷,其实大致的思想都是差不多的,今天我也来写一篇关于RxJava与Retrofit的文章,聊一聊关于RxJava与Retrofit的封装,尽可能的能让其适用于大部分项目,以供大家在学习这方面的时候多一份参考。

关于RxJava的基础使用可以参考我的另一篇文章:《是时候学习RxJava了》,至于Retrofit的基本使用这里我就不做介绍了,这里可以给大家提供一个学习Retrofit比较全面的网址 retrofit-getting-started-and-android-client,对Retrofit还不太熟悉的同学可以先去看看上面的系列文章。

闲话不多说了,直接上今天的主题。我们先来看看关于RxJava和Retrofit最基本的使用是怎么样的

首先我们需要去定义一个对应接口的Service和返回结果的实体类

接着再去初始化Retrofit

最后我们就可以去使用了

逻辑还是挺清晰的,但是呢,如果每次使用都让你去写这么多的代码肯定会觉得很乏味,并且这里我还没有对返回结果做错误处理,于是我们就应该考虑一下对代码封装一下了。

但是应该从哪里入手呢,这里简单分析下:

  • 看上面的代码我们会发现Retrofit初始化的那段代码,一般就一个baseUrl会有不同,其他的基本是一致的,如果我们每次去创建一个Service都要去写那么多重复的代码也大大增加了冗余度
  • 对于返回的结果一般情况下数据格式是这样的:

    code是服务器端和客户端约定好的一种规则,比如1表示数据请求成功,-1表示请求失败,-2表示权限不足等等,msg代表提示消息,其中data可能是数组对象也可能是普通的对象,我们可以考虑对返回的结果做一个统一的处理。

经过上面的分析我们大致有了一个方向,对于Service的创建应该有一个类去单独处理。所以这里我创建了一个ServiceFactory的类。