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

93 阅读2分钟

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

01 网络通信

网络请求框架对比:

image.png(青训营PPT)

volly不支持输入输出流,是把文件直接存在数组里。

retrofit

retrofit是对OKhttp的封装。

使用:

  1. Retrofit库的引入:在需要用到Retrofit接口的module中,新增依赖。
  2. 创建用于描述网络请求的接口。
  3. 使用Retrofit实例发起网络请求:创建Retrofit实例,创建请求接口的实例,并获取到Call实例,调用call.enqueue进行异步请求,处理返回的数据。

TTNet

TTNet是字节跳动自己打造的一种网络库,将retrofit底部的OKhttp改为cornet,有以下优点:

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

核心主要是替换其中的2点: 1.替换底层用到的 OKHttpClient 2.替换底层用到的 OKHttpCall

02 数据存储

常见存储方式:

image.png

数据库框架对比:

image.png

room介绍和实践案例

Room是Google Jetpack家族里的一员,Room在SQLite上提供了一个抽象层,以便在充 分利用sQLite的强大功能的同时,能够流畅地访问数据库

主要的3个组件 1.数据库类(Database),用于保存数据库并作为应用持久性数据底层连接的主要访问点。

2.数据实体(Entity),用于表示应用的数据库中的表。

3.数据访问对象(DAO),提供您的应用可用于查询、更新、插入和删除数据库中的数据的方法。

room接入:

  1. Gradle目录的build.gradle文件里添加room依赖。
  2. 数据库表设计
  3. 新建Entity:定义一个User数据实体,User的每个实例都代表App数据库中的user表的一 行
  4. 新增DAO:定义一个名为UserDao的DAO,用来对User表的增删改查
  5. 新建数据库类,进行数据库配置
  6. 获取dao对象,即可进行增删改查。