首页 > 安全资讯 >

Rxjava+MVP+Retrofit强强联合

16-09-12

作为一个已经在IT行业混搭了快三年的Android开发人员,一直熟悉与被所有人认同的MVC模式,并且通过学习也搭建有自己的网络框架,数据库ORM框架,所以在项目中一直也停留在这些很普通的知识使用上。但最近参加看一个比较大型的项目

作为一个已经在IT行业混搭了快三年的Android开发人员,一直熟悉与被所有人认同的MVC模式,并且通过学习也搭建有自己的网络框架,数据库ORM框架,所以在项目中一直也停留在这些很普通的知识使用上。但最近参加看一个比较大型的项目,发现仅仅使用以前的思想,在后期开发和维护中会出现很大的问题,代码耦合性太高,程序员最怕的就是迁一发动全身的时候,那是会让人慢慢奔溃的,并且各种异步,回调的代码,有句话叫迷之缩进毁一生,确实是这样的,现在是深深体会到这样的情况,所以在最近兴起的RxJava这种响应式的编程结构,以及MVP这种非常解耦的模式,以及和Rxjava产生基情的Retrofit网络框架,所以决定研究一下,将三者一起使用,你会发现你找到了新的出路。

Rxjava

这种响应式的模式,在代码结构上采用链式调用的方式,结构很清晰,从上而下执行,
并且可以完美的解决我刚刚时候的迷之缩进毁一生,它可以很简单的完成异步处理,指定各自工作的线程即可。推荐一篇很好介绍

RXjava的文章。建议初学者先看看这篇文章,我也封装了属于自己的写了Demo,
详情点击这里,先上我封装好了代码体验一下吧。
icon

MVP

一张图对比一下MVC和MVP体验一下两种模式的区别:

icon
MVP中实际上Activit承担了两种角色那就是View和Controller,所以随着项目的发展你会发现你的Activity会越来越臃肿,导致很难维护,而且很难做修改,总之就是很乱。但看了MVP你会发现View和Model之间没有直接的联系,presenter这个中介就成了传输的重要桥梁。那么Activity这个时候就是真正的V层了,之做UI方面的更新之类的操作,业务层的逻辑不会出现的Activity中,那么你的Activity中的代码会格外的清晰。
而在Presenter中再结合Rxjava这种响应式,将业务层逻辑放在专门的Manager中,在P层的代码也不会出现迷之缩进的情况,因为Rxjava可以直接指定线程工作。先看看MVP的工程目录结构:

icon

Retrofit

Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp做网络请求。

1、创建业务请求接口,具体代码如下

icon

这里需要稍作说明,@GET注解就表示get请求,@Query表示请求参数,将会以key=value的方式拼接在url后面

2、创建一个Retrofit的示例,并完成相应的配置

icon

client(new OkHttpClient())创建一个client

addConverterFactory(GsonConverterFactory.create())Goson解析

3、创建ManagerService

icon

4、拿到了service,现在就可以直接请求网络了

icon

那么久完成了一个Request,接下来介绍一些常用的参数:

1、GET方式

    1、@Query

et方法请求参数都会以key=value的方式拼接在url后面,Retrofit提供了两种方式设置请求参数。第一种就是像上文提到的直接在interface中添加@Query注解,还有一种方式是通过Interceptor实现,直接看如何通过Interceptor(一般用于headers或者一些通用参数等)实现请求参数的添加。

添加header:

icon

创建httpclien的时候将Interceptor添加进去:

icon

2. @QueryMap

icon

Query集合

icon

4. @Path

icon

POST:

1. @field

icon

@FieldMap

icon

@Body

icon

相关文章
最新文章
热点推荐