android 网络请求总结

1 先看下基础部分:

android okhttp网络访问是基于 tcp/ip 的

最上层是应用层的封装,有http,https(加密),ftp

下面是socket套接字的封装,就是将ip和端口的封装

在下面就是tcp/udp 在下面 ip协议层了。

2 下面看下常用的http/https请求方式

Volley:四个网络调度线程和一个缓存调度线程 适用范围:非大文件(缓存过大影响内存),非频繁数据(线程池线程数小)

OKHttp:用起来有点麻烦,使用时需要一定的经验,比如我的总结:

1 OkHttpClient是线程池和连接池的最小单位,能复用就复用,不然会产生多个线程池和连接池

2 可以用OkHttpClient对象newbuilder()来实现定制新的client请求,依然能实现共享线程池和连接池。

3 内部是quene的方式执行,但无法返回过来的也是顺序过来,需要及时cancel掉对应的call

对应的回调是 java.net.SocketException: Socket closed

关闭方案:

//添加tag

Request request = new Request.Builder().

url(url).tag("requestKey").build();

//When you want to cancel:

//关闭等待队列里的

for (Call call : mHttpClient.dispatcher().queuedCalls()) {

if (call.request().tag().equals("requestKey"))

call.cancel();

}

//B)关闭执行线程池里执行的call(running队列也包含)

for (Call call : mHttpClient.dispatcher().runningCalls()) {

if (call.request().tag().equals("requestKey"))

call.cancel();

}

3 改进方案思考

1 okhttp里用到的okio 是不是可以用mmap来替代,而它的缓存机制仍保留

2 网路差的时候是不是可以自动改为udp方式

期待我的改进版本的okhttp不,期待,我就把这两项给弄了

相关推荐
逆境不可逃4 分钟前
【WebSocket 02】 握手拦截实现 Token 鉴权、Ping/Pong 心跳保活、前端断线自动重连
网络·websocket·网络协议
安当加密6 分钟前
汽车OTA升级怎么保证安全?从固件签名到密钥全生命周期管理
网络·安全·汽车
网络研究院7 分钟前
关键基础设施与认知领域:网络攻击作为跨海事、能源和数字网络的胁迫工具
网络·能源·网络攻击·海洋·关键基础设施
byte轻骑兵10 分钟前
【AVRCP】规范精讲[23]: 字符集切换全流程与两种典型场景解析
网络·人机交互·媒体·avrcp·媒体控制·车机蓝牙
InHand云飞小白11 分钟前
连锁门店IT运维实战:如何用“云+端“架构解决分布式网络管理难题
运维·网络·5g·安全·智能路由器·5g路由器
Anthony_23113 分钟前
Linux 从基础操作到故障排查
linux·运维·服务器·网络·nginx·ubuntu·centos
暗冰ཏོ20 分钟前
2026 App 开发完整指南:Android、iOS、跨平台开发与安卓应用上线全流程
android·ios·uni-app·web app·app开发
三少爷的鞋20 分钟前
为什么 Clean Architecture 能让 ViewModel 保持轻量?
android
AD钙奶-lalala24 分钟前
kotlin反射
android·开发语言·kotlin
le16161624 分钟前
Android Compose——尺寸修饰符的调用顺序构成的不同尺寸约束效果
android·compose·modifier