当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/307513.html

相关文章:

  • 用 Python 自动化处理无聊的事情
  • 稀疏计算、彩票假说、MoE、SparseGPT
  • Git Windows安装教程
  • iOS高级理论:Runtime应用
  • php判断和过滤get或者post的html标签,防止跨站点脚本(XSS),链接注入,框架注入等攻击
  • PySide6实现课堂点名程序
  • 瑞_Redis_Redis命令
  • js 算法题 在数组中找出和为目标值 target 的那 两个 整数,并返回它们的数组下标
  • 基于springboot接口的编写
  • 【HarmonyOS】鸿蒙开发之Video组件——第3.7章
  • React引入css的几种方式以及应用
  • [算法沉淀记录] 排序算法 —— 冒泡排序
  • 【机器人最短路径规划问题(栅格地图)】基于遗传算法求解
  • 如何做代币分析:以 TRX 币为例
  • 关于地址引用与值引用的坑
  • 初谈软件工程(一)
  • 自动化开展思路
  • 安装使用zookeeper
  • nginx实现http反向代理及负载均衡
  • vue组件中data为什么必须是一个函数
  • 科技论文编写思路
  • Windows虚拟机克隆后修改SID
  • 前端架构: 脚手架工具rxjs的快速上手应用
  • 小程序框架(概念、工作原理、发展及应用)
  • 音视频数字化(数字与模拟-电影)
  • 在 Ubuntu 中, 使用 fsck 命令来修复磁盘文件系统
  • LED电子显示屏连接方式解析
  • Mysql运维篇(五) 部署MHA--主机环境配置
  • Offer必备算法09_分治快排_四道力扣OJ(快排三路划分)
  • Linux下性能分析的可视化图表工具