继续封装个 Volley 组件

 前面已经封装了很多常用、基础的组件了:base-module, 包括了:

  • crash 处理
  • 常用工具类
  • apk 升级处理
  • log 组件
  • logcat 采集
  • ftp 文件上传
  • blur 高斯模糊
  • fresco 图片处理
  • 等等

那么,今天继续再来封装一个网络组件,基于 volley 的二次封装,目的也是为了简化外部使用,以及新项目可快速接入使用。

这样一来,开发一个简单的 app 所需要的公共基础组件基本都已经封装好了,在这些组件基础上,应该可以快速完成第一版迭代,快速出包。

下一次的计划,也许是封装 OkHttp 的组件,也许是封装个播放器的组件,也可能是封装常用的自定义 View,视情况而定吧。

前言

封装了这么多组件,一步步走过来,我已经有了自己一定习惯下的封装思路了,可能代码写得并不是很好,设计得不是很合理,内部职责划分不是很明确。

但,我热衷的封装思想是:一条调用链使用

我喜欢借助 AndroidStudio 的代码提示功能,结合调用链的使用方式,将组件的使用划分成多个步骤,控制每个步骤的 api,让其他人使用的时候,最好可以达到不看文档,不看源码,只需要了解入口,之后都可以通过 AndroidStudio 的代码提示来一步步引导使用的目的。

至于为什么需要二次封装 Volley,这篇就不扯了,反正每个组件的封装肯定是来源于有这方面的需求。

二次封装

同样,DVolley 组件你需要了解的入口也就是:DVolley

DVolley.png

第一个步骤我开放了三个 api,其实也就是 DVolley 大概支持的功能:

  • url()

用于访问服务端的接口

  • enterGlobalConfig()

用于配置一些公共的请求参数或请求头信息,比如 mac,t 这类通常都是公共的请求参数,不必每次都手动去设置。

  • cancelRequests()

内部支持一次性同时发起六条请求,网络问题等等总会导致某些请求在队列中等待,但如果这时页面退出了,那么这些请求应该就要取消掉,甚至已经发出的请求这时候才回来,那也应该不要通知上层 ui。所以,支持对每条请求设置 tag,然后根据 tag 来取消这些请求。

Volley_url.png

目前组件只支持三个功能:

  • post()

post 方式访问网络接口

  • get()

get 方式访问网络接口

  • asImageFile()

下载网络中的图片文件到本地指定目录,因为 volley 的设计并不能够很好的支持大文件的下载,所以就不提供这个了,刚好有下载图片文件的需求,所以就封装上了。

虽然 volley 也支持类似 fresco 这种框架对图片的缓存,加载处理,但这些工作一般项目里都选择 fresco 或 glide 来处理了,所以组件也就不提供 volley 的这些功能了。

下面看看下载图片文件的用法:

下载图片文件示例

DVolley.url("https://upload-images.jianshu.io/upload_images/1924341-d7190704b160d280.png")     .asImageFile()     .downloadTo(new File("/mnt/sdcard/my.png"), new VolleyListener<String>() {         @Override         public void onSuccess(String data) {                 //data 是图片文件保存的目录地址          }           @Override          public void onError(int code, String description) {           }});

通常图片框架都默认处理图片下载后的缓存目录、保存格式、文件名等等。这就导致有时如果需要明确指定下载网络上某张图片到指定的本地目录中以指定的文件名存储,使用这些图片框架就有些麻烦了,所以就封装了这个功能。

继续回来看看正常的网络接口访问的使用:

关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信