这是我参与【第四届青训营】笔记创作活动的第三天,在需要实现用户可以不断获取大量最新信息的背景下,我学习了数据存储和网络通信,可以有效实现上述需求。在此,对今日所学内容做出总结。
网络通信
网络请求框架对比
表中所列是几个常见的网络请求框架各特点的对比归纳。
Retrofit
Retrofit是目前Android平台上,最热门的网络请求封装框架,是对上表中OkHttp的一个封装
Retrofit使用介绍
以一个场景做说明,假设客户端知道了一个用户的uid,想通过服务端查下这个用户的姓名,通过Retrofit实现。
步骤为以下三步:
- Retrofit库的引入
- 在需要用到Retrofit接口的module中,新增依赖
-
创建用于描述网络请求的接口
接口说明:
接口类名:可自定义,尽量和这类请求的含义相关,这样也方便我们在写代码时,分清每个接口的作用,避免忘记和混淆
函数名:可自定义,需要能识别出该接口的作用,该interface里可以增加多个不同的函数
@Get注解:指定接口的相对路径,采用Get方法发起请求
@Path注解:需要外部调用时,传入一个uid,该uid会替换@GET注解里相对路径的{uid}
- 使用Retroit实例发起网络请求
- 创建Retrofit实例
- 创建请求接口的实例
- 调用call.enqueue进行异步请求
注解类型
注解是以@符号开头的用来标识如类、字段、方法等的工具。注解针对程序,一般需要结合注解处理器或者反射等实现对应的功能,否则将没有实际的意义。
数据存储
存储方式对比
Android常见的存储方式有以下几种,根据各自的特点,我们将它们应用于不同的场景.
数据库框架对比
Room
介绍
Room底层是对SQLite进行了封装,使得在使用SQLite的同时,更加流畅的去访问数据库。
主要组件
- Database(数据库类):相当于数据库,便于我们访问数据库的内容
- Entity(数据实体):相当于数据库中表的定义
- DAO(数据访问对象):用于访问表中的内容进行增删改查
原理
- 编译期,通过kapt处理@Dao、@Database注解,动态生成对应的实现类.(kapt是一个注解处理器,其实之前定义的都是抽象,需要动态生成对应实现类)
- 底层使用Android提供的SupportSQLiteOpenHelper实现数据库的增删改查等操作
总结
我想根据刚开始的课题背景进行总结,我们要实现可不断获取大量信息流内容,就需要不断刷新信息流的数据,并且快速展现。因此,可以对信息流的数据不断刷新,可以通过网络请求,选择合适的网络框架,实时从服务端获取数据。那快速展现可以将数据保存在本地,以便直接进行数据获取、解析和展示。