网络通信封装框架 | 青训营笔记

92 阅读2分钟

这是我参加「第四届青训营 」笔记创作活动的第2天

目前大部分APP在实现时都需要与网络连接完成数据同步,所以网络通信是安卓开发中必不可少的一部分。

在青训营的这节课中讲到了目前几种主要的网络请求方式,对它们有了一定的认识,其中对Retrofit进行了比较详细的了解。

Retrofit:目前Android开发平台最常用的网络请求框架,是对OkHttp的进一步封装

使用方法:

  1. 引入Retrofit相关的库,即在build.gradle中添加依赖
  2. 在manifest文件中添加网络权限,否则会报错E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
  3. 创建接口,使用@GET@GET发起网络请求,用CallCall返回请求拿到的相关内容,如果需要外部调用,添加@Path@Path替换@GET@GET里相对应的内容
  4. 发起网络请求

在使用时出现的@GET@GET@Path@Path是网络请求注解,@GET@GET是采用Get方法Get方法发送网络请求,使用方式是将参数放在路径中,在路径后面跟着请求参数;而@Path@Path用于替代URL地址的缺省值。

注解可以理解为是代码中的标签,同样注解也有生命周期,分为三种:

  • SOURCE:在源码中有效,编译时无效的注解,如@Override
  • CLASS:在编译class文件时有效,同时要使用注解处理器(APT)
  • RUNTIME:在运行期间有效

创建Retrofit实例定义说明:

  • 接口类名(IUserInfoService):自定义
  • 函数名(getUserName):自定义,说明该接口的作用,可以增加多个不同的函数,一个函数=一个接口
  • @GET注解:指定接口的相对路径,采用Get方法发起请求
  • @Path注解:需要外部调用时,传入一个uid,替换@GET注解里相对路径的{uid}
  • 返回值Call:用ResponseBody可以直接拿到请求的String内容,可以替换成其他如User,自动转为Model类,还需要添加其他的转换器

注意事项: 进行网络请求时需要申请权限,分为动态和静态; 网络请求是一类耗时操作,不可以用主线程来进行