数据存储&网络通信|青训营笔记
这是我参与「第四届青训营」笔记创作活动的的第4天
01 网络通信
1. 网络库开源框架对比
- HttpURL Connection: 需要自己做封装,在只有少量网络请求的工具类APP中使用
- Volley: 适合网络请求频繁,传输数据量小的APP
- OkHttp: 可以设置拦截器,支持大文件上传和下载,性能更好,一般需要二次封装使用
- Retrofit: OkHttp的二次封装,且更出色
2. Retrofit介绍
Retrofit是对OkHttp的一个封装
Retrofit的使用:
- 引入Retrofit库
- 创建 用于描述网络请求 的接口
- 发起网络请求
注解类型
注解的生命周期:
- SOURCE:只在源码中有效,编译时抛弃
- CLASS:编译class文件时有效,一般会用到注解处理器
- RUNTIME:运行期间,获取对应的注解,并做相关的处理
3. TTNET
字节内部采用的网络库,基于Retrofit进行二次开发,将底层的OkHttp改为自研的Cronet
02 数据存储
1. 数据存储方式对比
SharedPreferences: 键值对存储,只能存5种简单类型
文件存储
ContentProvider: 可跨APP进行数据共享,通过URI对象进行访问
SQLite存储数据: 可存储结构化数据
2. 数据库框架对比
Room
GreenDao
ObjectBox
3. Room数据库使用介绍
对SQLite进行了一个封装
主要的三个组件:
- 数据库类
- 数据实体
- 数据访问对象
4. Room数据库原理介绍
编译期,通过kapt处理@DAO,@Database注解,动态生成对应的实现类 底层使用Android提供的SupportSQLiteHelper实现增删改查操作