OKio与Retrofit

OKio

    轻量级IO框架,结合java.io和java.nio,提供阻塞IO和非阻塞IO的功能,对缓存等底层结构做了优化,核心的代码大约5000行

       最基本的接口Sink、Source,基础IO操作, BufferedSink和BufferedSource接口分别继承自Sink和Source,扩展了读写功能,定义了各式各样的读和写。

      Buffer(可读、可写、可处理数据的缓存类)实现了BufferedSink和BufferedSource,增加了一些处理数据的操作,RealBufferedSink和RealBufferedSource是BufferedSink和BufferedSource的实现类,真正进行的缓冲读写的角色,

Okio类相当于一个简单工厂,对外暴露接口,可以产生各式各样的Sink和Source。

定时模块主要由Timeout和其子类AnsycTimeout类组成

缓存设计在cpu利用率和内存利用率之间做了权衡,由Buffer,Segment,SegmentPool三类构成

      存储容器用的不是数组,而是Segment类对象构成的循环链表,Segment用了享元模式,有SegmentPool对Segment进行管理

为什么他可以这么简单的实现多种数据类型的读写?原因就在于它实现了一个缓存区,整个IO是基于缓存的。我们的操作都是针对缓存区的,所以可以非常灵活的实现多种数据类型的读写。而我们也看到,最终数据还是通过字节流写入到了文件。

https://www.jianshu.com/p/ea3ef6d7f01b

https://www.jianshu.com/p/5eaf26c58047

https://blog.csdn.net/zwlove5280/article/details/79806536

https://blog.csdn.net/zwlove5280/article/details/79820139

Retrofit

   OkHttp的加强版,网络加载框架,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装,包含了特别多注解,支持很多开源库https://www.jianshu.com/p/45cb536be2f4

  Retrofit将Http请求抽象成Java接口,在接口里面采用注解来配置网络请求参数,用动态代理将该接口的注解“翻译”成一个Http请求,最后再执行 Http请求;Responsebody是Retrofit网络请求回来的原始数据类

baseUrl("http://apis.baidu.com/txapi/")

     http://apis.baidu.com/txapi/是我们要访问的接口的BaseUrl,而我们现在用GET注解的字符串 "word/word"会追加到BaseUrl中http://apis.baidu.com/txapi/world/world

@Query("num")String num, @Query("page")String page;

     键值对,Retrofit会把这两个字段一块拼接到接口中;GET请求方式,如果携带的参数不是以

?num=10&page=1

拼接到接口中(不带?分隔符),那就不用Query注解了,而是使用Path注解

@GET(URL.CLAIM_APPLICATION_BOOKINFO + "{claimId}")
Observable<PublicResponseEntity<ClaimApplicationBookInfo>> getClaimApplicationBookInfo(@Header("Authorization") String authorization, @Path("claimId") String claimId);

通过{}占位符来标记的claimId,用@Path注解在传入claimId的值;query和path两者可以同时使用;

@Header与@Headers

    使用场景:@Header用于添加不固定的请求头,@Headers用于添加固定的请求头
   使用范围:@Header作用于方法的参数;@Headers作用于方法

@Body和@QueryMap

  @QueryMap注解会把参数拼接到url后面,所以它适用于GET请求;
  @Body会把参数放到请求体中,所以适用于POST请求

https://www.jianshu.com/p/0fda3132cf98 很详细的基本用法与例子

https://blog.csdn.net/sk719887916/article/details/51988507 大文件下载

https://blog.csdn.net/carson_ho/article/details/73732076

网络请求库 - 对比

https://www.jianshu.com/p/f2644cc784f3

https://blog.csdn.net/chenjie0932/article/details/79558050

发布了431 篇原创文章 · 获赞 155 · 访问量 44万+

猜你喜欢

转载自blog.csdn.net/ma15732625261/article/details/86682536