数据存储&网络通信|青训营笔记

130 阅读1分钟

数据存储&网络通信|青训营笔记

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

01 网络通信

1. 网络库开源框架对比

  1. HttpURL Connection: 需要自己做封装,在只有少量网络请求的工具类APP中使用
  2. Volley: 适合网络请求频繁,传输数据量小的APP
  3. OkHttp: 可以设置拦截器,支持大文件上传和下载,性能更好,一般需要二次封装使用
  4. Retrofit: OkHttp的二次封装,且更出色

2. Retrofit介绍

Retrofit是对OkHttp的一个封装

Retrofit的使用:

  1. 引入Retrofit库
  2. 创建 用于描述网络请求 的接口
  3. 发起网络请求

注解类型

注解的生命周期:

  1. SOURCE:只在源码中有效,编译时抛弃
  2. CLASS:编译class文件时有效,一般会用到注解处理器
  3. RUNTIME:运行期间,获取对应的注解,并做相关的处理

3. TTNET

字节内部采用的网络库,基于Retrofit进行二次开发,将底层的OkHttp改为自研的Cronet

02 数据存储

1. 数据存储方式对比

SharedPreferences: 键值对存储,只能存5种简单类型

文件存储

ContentProvider: 可跨APP进行数据共享,通过URI对象进行访问

SQLite存储数据: 可存储结构化数据

2. 数据库框架对比

Room

GreenDao

ObjectBox

3. Room数据库使用介绍

对SQLite进行了一个封装

主要的三个组件:

  1. 数据库类
  2. 数据实体
  3. 数据访问对象

4. Room数据库原理介绍

编译期,通过kapt处理@DAO,@Database注解,动态生成对应的实现类 底层使用Android提供的SupportSQLiteHelper实现增删改查操作