这是我参与「第四届青训营 」笔记创作活动的第4天。
01 网络通信
网络请求框架对比:
(青训营PPT)
volly不支持输入输出流,是把文件直接存在数组里。
retrofit
retrofit是对OKhttp的封装。
使用:
- Retrofit库的引入:在需要用到Retrofit接口的module中,新增依赖。
- 创建用于描述网络请求的接口。
- 使用Retrofit实例发起网络请求:创建Retrofit实例,创建请求接口的实例,并获取到Call实例,调用call.enqueue进行异步请求,处理返回的数据。
TTNet
TTNet是字节跳动自己打造的一种网络库,将retrofit底部的OKhttp改为cornet,有以下优点:
- 基于Retrofit改造,具备了Retrofit所具有的优点
- 支持多个Http网络库的动态切换(okhttp和cronet)
- 支持网络拦截配置:添加公共参数,动态切换协议及Host,动态选路等
- 支持流解析,json序列化
核心主要是替换其中的2点: 1.替换底层用到的 OKHttpClient 2.替换底层用到的 OKHttpCall
02 数据存储
常见存储方式:
数据库框架对比:
room介绍和实践案例
Room是Google Jetpack家族里的一员,Room在SQLite上提供了一个抽象层,以便在充 分利用sQLite的强大功能的同时,能够流畅地访问数据库
主要的3个组件 1.数据库类(Database),用于保存数据库并作为应用持久性数据底层连接的主要访问点。
2.数据实体(Entity),用于表示应用的数据库中的表。
3.数据访问对象(DAO),提供您的应用可用于查询、更新、插入和删除数据库中的数据的方法。
room接入:
- Gradle目录的build.gradle文件里添加room依赖。
- 数据库表设计
- 新建Entity:定义一个User数据实体,User的每个实例都代表App数据库中的user表的一 行
- 新增DAO:定义一个名为UserDao的DAO,用来对User表的增删改查
- 新建数据库类,进行数据库配置
- 获取dao对象,即可进行增删改查。