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

87 阅读3分钟

这是我参与【第四届青训营】笔记创作活动的第三天,在需要实现用户可以不断获取大量最新信息的背景下,我学习了数据存储和网络通信,可以有效实现上述需求。在此,对今日所学内容做出总结。

网络通信

网络请求框架对比

image.png 表中所列是几个常见的网络请求框架各特点的对比归纳。

Retrofit

Retrofit是目前Android平台上,最热门的网络请求封装框架,是对上表中OkHttp的一个封装

Retrofit使用介绍

以一个场景做说明,假设客户端知道了一个用户的uid,想通过服务端查下这个用户的姓名,通过Retrofit实现。

image.png

步骤为以下三步:

  • Retrofit库的引入
  1. 在需要用到Retrofit接口的module中,新增依赖
  • 创建用于描述网络请求的接口

    接口说明:

    接口类名:可自定义,尽量和这类请求的含义相关,这样也方便我们在写代码时,分清每个接口的作用,避免忘记和混淆

    函数名:可自定义,需要能识别出该接口的作用,该interface里可以增加多个不同的函数

    @Get注解:指定接口的相对路径,采用Get方法发起请求

    @Path注解:需要外部调用时,传入一个uid,该uid会替换@GET注解里相对路径的{uid}

image.png

  • 使用Retroit实例发起网络请求
  1. 创建Retrofit实例
  2. 创建请求接口的实例
  3. 调用call.enqueue进行异步请求

image.png

注解类型

注解是以@符号开头的用来标识如类、字段、方法等的工具。注解针对程序,一般需要结合注解处理器或者反射等实现对应的功能,否则将没有实际的意义。

image.png

数据存储

存储方式对比

Android常见的存储方式有以下几种,根据各自的特点,我们将它们应用于不同的场景.

image.png

数据库框架对比

image.png

Room

介绍

Room底层是对SQLite进行了封装,使得在使用SQLite的同时,更加流畅的去访问数据库。

主要组件

image.png

  • Database(数据库类):相当于数据库,便于我们访问数据库的内容
  • Entity(数据实体):相当于数据库中表的定义
  • DAO(数据访问对象):用于访问表中的内容进行增删改查

原理

  1. 编译期,通过kapt处理@Dao、@Database注解,动态生成对应的实现类.(kapt是一个注解处理器,其实之前定义的都是抽象,需要动态生成对应实现类)
  2. 底层使用Android提供的SupportSQLiteOpenHelper实现数据库的增删改查等操作

总结

我想根据刚开始的课题背景进行总结,我们要实现可不断获取大量信息流内容,就需要不断刷新信息流的数据,并且快速展现。因此,可以对信息流的数据不断刷新,可以通过网络请求,选择合适的网络框架,实时从服务端获取数据。那快速展现可以将数据保存在本地,以便直接进行数据获取、解析和展示。