这是我参与(第四届青训营)笔记创作活动的第4天,今天的笔记是关于网络通信的内容。课程开始前进行了课前回顾,共有三个问题。首先是网络请求框架对比,最热门的网络请求封装框架是retrofit,其是对OKhttp的封装之一。其快速使用:retrofit库的引入;创建用于描述网络请求的接口;使用retrofit实例发起的网络请求。其使用介绍:需要用到retrofit接口的module中,新增依赖,创建用于描述网络的接口,代码:interface IUfoservice { 以下省略;发起网络请求、创建retrofit实例、创建请求接口的实例,再获取到call实例、调用call.enqueue进行异步请求、处理返回的数据。注解类型:标记类(@formurlencoded、@mutipart、@streaming)。 字节跳动用的是retrfit研发,使用cronet网络库(打造自己的网络库,提供字节跳动的所有APP使用)要求:使用cronet,进行二次封装;封装的接口具有高易性;可使用较多的APP,功能要全面。 ttnet网络库具有以下优点:基于retrofit改造,具备其所有的优点;支持多个http网络库的动态切换(okhttp和cronet);支持网络拦截配置(添加公共参数,动态切换协议以及host动态选路);支持流解析,json序列化等。 因ttnet基于retrofit进行二次开发,所以两者的用法基本一致。retrofit主流程:通过builder模式,创建retrofitconfig,保存baseURL等内容;创建动态代理对象;创建okhttpcall;发起网络请求;一共四个部分。retrofit原理简介:使用注解来描述网络请求;通过Java动态代理来进行注解的识别和网络请求的构建;底层使用OKhttp发起网络请求。ttnet原理简介:基于retrofit进行二次开发,替换底层的OKhttp来改为自研的cronet。