序列化反序列化适配器
Result适配
CallFactory适配器
设计模式
观察模式 RxJava中Observer&&Observelbe
装饰模式 RxJava的操作符过程
工厂模式 serviceMethod.callFactory.newCall
适配模式 callAdapter
构建模式 Retrofit build()
静态代理 OkHttpCall是Retrofit.Call 代理 Okhttp.Call
动态代理 Proxy.newProxyInstance 访问Service接口时
责任链模式 Okhttp的Interceptor
模板模式 HashMap和LinkedHashMap
外观模式 ServiceMethod对过程的精简
Okhttp拦截器
BridgeInterceptor
Accept-Encoding为空时自动加gzip,并transparentGzip由记录,获取Response后,自动解压
ResponseBody只可以读一次,第二次有异常if (closed) throw new IOException("Stream closed");CacheInterceptor
在new CacheStrategy.Factory(now, chain.request(), cacheCandidate).get() 内判断 是否有有效缓存(Expires、Last-Modified)。有的话,netrequest为null
后端不支持Cache但是配置了Cache对象时,Cache大小容易导致OOM,删的条件:超出MaxSize、POST请求、后端支持Cache,存的条件是:Cache对象不为null。有两类文件,journal、httpcache文件
所以存了大量无用信息httpcache文件,占用cache存储空间,
在进程启动时,DiskLruCache 解析journal文件得到cachekey的列表,用于命中。RealCall getResponseWithInterceptorChain
责任链模式,把下一步提前new出来,丢给当前这一步,一环套一环,环的构建过程是,上一环开启下一环,最后一环不选择开启新的环而是终止,递归的过程