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不,期待,我就把这两项给弄了

相关推荐
xiaoyaohou1113 小时前
【Web安全】SRC平台深度解析:从CNVD到企业SRC的漏洞挖掘指南
网络·安全·web安全
BoomHe13 小时前
git Rebase 为任意一笔提交补上 Change-Id
android·git·android studio
TDengine (老段)13 小时前
TDengine 超级表/子表/普通表 — 设计理念与内部表示
android·大数据·数据库·物联网·时序数据库·tdengine·涛思数据
shuaiqinke13 小时前
【分享】Edge浏览器|内置扩展仓库|支持油猴|上网无限制
android·前端·人工智能·edge
2601_9577875813 小时前
多平台矩阵账号防关联技术深度解析:2026年IP隔离与设备指纹的攻防战
网络·tcp/ip·矩阵
sdm07042714 小时前
应用层自定义协议
运维·服务器·网络
我的世界洛天依14 小时前
胡桃讲编程|从钩子函数到网络安全:用 ES262 原生 JS 模拟原神反作弊攻防
网络
Carson带你学Android14 小时前
见证历史!Swift 6.3 官方支持 Android,跨平台要变天了?
android
VOOHU-沃虎14 小时前
VOOHU——防水RJ45连接器在户外网络设备中的应用与选型
运维·服务器·网络
June bug14 小时前
Failed to fetch+HTTP 422=Agent ID 不匹配
网络·网络协议·http