Android+网络通信| 青训营笔记

94 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第2天

  • 网络通信

网络库框架对比 image.png

  • Volley的Request和Response都是把数据方法放到byte[]数组里,不支持输入输出流,把数据放到数组中,如果大文件多了,数组就会非常大且多,消耗内存
  • 行业内,目前基本上都是Retrofit 和 OkHttp组合的这种方式来进行网络请求
  • IO 和 NIO这两个都是Java中的概念,如果我从硬盘读取数据,第一种方式就是程序一直等,数据读完后才能继续操作这种是最简单的也叫阻塞式IO,还有一种是你读你的,程序接着往下执行,等数据处理完你再来通知我,然后再处理回调。而第二种就是 NIO 的方式,非阻塞式, 所以NIO当然要比IO的性能要好了,而 Okio是 Square 公司基于IO和NIO基础上做的一个更简单、高效处理数据流的一个库。
    Retrofit使用&原理介绍
    场景:客户端知道了一个用户的uid,想通过服务端查下这个用户的姓名,通过Retrofit如何实现呢? 接口:www.bytedance.com/users/{uid}…
    其中{uid}要替换为实际的uid,例如1123,最终请求为www.bytedance.com/users/1123/…
    GET请求:
{
  "message": "success", 
  "data": { 
           "uid":"1123", 
           "first_name":"张", 
           "last_name":"三丰"
           } 
}
  1. 引入依赖库
  2. 创建 用于描述网络请求 的接口
  3. 发起网络请求

创建Retrofit实例

创建iUserInfoService实例

创建网络请求Call对象

使用Call对象发起异步请求

TTNet,字节跳动网络请求框架
TTNet优点:

  • 基于Retrofit改造,具备了Retrofit所具有的优点
  • 支持多个Http网络库的动态切换(okhttp和cronet)
  • 支持网络拦截配置:添加公共参数,动态切换协议及Host,动态选路等
  • 支持流解析,json序列化

总结:

TTNet的用法与Retrofit基本一致,请求和返回都封装得很好,区别在于TTNet的底层 是字节自研的Cronet。

参考链接:juejin.cn/post/712345… 来源:稀土掘金