okhttp中的Okio实现原理
来源:互联网 发布:小米手机清除所有数据 编辑:程序博客网 时间:2024/06/01 18:34
okhttp中使用到的Okio对IO的操作进行了自己的封装,Okio拥有自己的缓存,Okio的读写都会经过自己的缓存,而Okio的缓存采用了池化的思想,也就是并不是用完了分配的内存就立即释放,在频繁读写的时候,提高了一定的性能。
Okio的主要类图如下:
Okio主要类的方法一栏如下:
BufferedSource接口主要用来读取,BufferedSink接口主要用来写入;读取的源头来自于一股输入流,我们会用Okio工具类的source方法获取一个RealBufferedSource类来读入,写出的目的地是一股输出流,我们会用Okio工具类的sink方法获取RealBufferedSink类来写出;RealBufferedSource会读入到Buffer,同样RealBufferedSink写出会先写出到Buffer,读入的时候,不一定读入输入流中的全部数据到Buffer,视读入方法而定,写出的时候,不会全部写出到输出流,包括writeAll方法也不是全部写出到输出流,而只是把Buffer中满的Segment写出到输出流,然后在flush和close的时候,才会把Buffer中剩余的不满的Segment写出到输出流。而从输入流读入和写出到输出流这2个任务其实是分别交给了SourceImpl和SinkImpl来实现。
Buffer对内存做了简单的管理,它把内存看成一条环状的Segment链,每一个Segment有8192个字节大小,对Segment的使用也是使用了池化的思想,Buffer需要的时候从池里获取,不用的时候放入池中,下面是Buffer的示意图:
- okhttp中的Okio实现原理
- Android Okhttp之Okio解析
- okio
- 在使用okhttp库的时候忘记导入okio
- Okhttp关于 java.lang.NoSuchMethodError: okio.BufferedSource报错
- Okio简化处理I/O操作原理
- OkHttp的实现原理(一)之同步
- OkHttp的实现原理(二)之异步
- okhttp、okio添加参数(addParams)出现的java.lang.IllegalArgumentException:Unexpected code point
- fastokhttp是基于okhttp-3.8.1.jar、okio-1.13.0.jar深度封装的OkHttp网络框架解读
- okHttp框架原理
- Android 基于TCP的 Socket 编程实现(结合 okio)
- Volley原理和Okhttp原理
- Android中的okHttp
- Fresco中的Okhttp模块
- Android中的OKHttp
- OkHttp中的线程安全问题
- Retrofit中的OkHttp
- 神(gai)奇(si)的MIUI优化
- Fragment(碎片)解析
- Git忽略文件
- 电子图书送“两会”,历史将会记住这一时刻
- 阿里云tomcat启动慢的问题怎么解决
- okhttp中的Okio实现原理
- 仿射變換(warpAffine)
- CSS的继承、层叠和特殊性
- 搭建FTP服务器注意
- UE4蓝图案例:鼠标触发特定物体后弹出特定图片的方法
- [Boolan] STL 花点功夫了解一下以前没去了解的东西^_^
- d3.js 选择器
- 如果在意,便不会做不相关的。务必清楚自己的需求。了解腾讯的方法, 去掉弯路,便能比腾讯更快。
- Android 关于arm64-v8a、armeabi-v7a、armeabi、x86下的so文件兼容问题