这是我参与(第四届青训营)笔记创作活动的第5天,今天笔记的内容是数据存储。常用的四种存储方式:sharepreference(只能存储简单的数据类型,适用于APP的配置信息)、文件存储(可以存储文件格式多样,无法联通不同的APP,适用于zip包和txt文件的存储)、contentProvider(可以连通多种APP进行数据联储;适用于音频、图片、视频、通讯录的解读)、sqlite存储数据(可以存储结构化数据和删改数据,适用于保存和删改feed流数据)。 选择数据库的技术选型要点:包增量(尽量减少包增量)、核心性能需要足够好、易用性(使用成本需要尽可能地低)、稳定性(尽量选择使用人数较多的、而且已经推出一段时间的框架)、作者(大公司或者大团队更加不容易弃更)、功能满足度(需要能够满足当前和未来的需求)。 数据库Room简介(Room属于Google): 其主要的三个组件:数据库类(用于保存数据库和持久性数据底层连接的主要访问点)、数据实体(表示应用的数据库的表)、数据访问对象(可以用于查询、更新、插入和删除数据库中数据的方法)。 room接入步骤:在gradle目录添加文件;设计数据表并且将其命名;新建entity(定义用户数据实体);新增DAO;新建数据库类,对数据库进行配置;获取dao对象,进行数据库的增删改查。 room原理介绍: 核心:编译期用kapt处理,其中,kapt生成的代码在build/source/kapt/;APPdatebase-impl的两个具体实现(createopenhelper()、userdao())。 自动生成sql语句;获取到数据库的cursor光标;使用cursor循环读取数据库的每条记录;将cursor里面的内容独读取出来,并且保存在list中返回。