Android数据库-Room框架

时间:2024-03-28 21:32:10

1、阶段一

数据库的操作一般放在子线程中进行,因为主线程是UI线程,写在主线程中可能出错。这一阶段主要讲Entity、Dao、Database,实现一个数据库的基本操作。添加依赖
Android数据库-Room框架
Entity创建
Android数据库-Room框架
Dao(Database access object)创建
Android数据库-Room框架
Database创建
Android数据库-Room框架
MainActivity中通过按钮调用增删改查操作
Android数据库-Room框架
Android数据库-Room框架
Android数据库-Room框架
注:系统会帮我们生成WordDao_Impl.java,所以Room框架还是很方便的。

2、阶段二

这一阶段主要讲AsyncTask 和Repository,对阶段一进行四个方面的完善。第一,引入LiveData,不用每次都调用updateView();第二,将DataBase类修改为singleton 单例模式,保证其只有一个实例;第三,引入AsyncTask,后台执行子线程;第四,引入ViewModel,来管理界面数据,使得MainActivity里面的数据得到精简。

改善一
Android数据库-Room框架
Android数据库-Room框架
改善二
Android数据库-Room框架
注:可以添加synchronized关键字,进一步加强singleton强度,保证当有多个客户端访问INSTANCE时,采用排对机制,保证只会有一个INSTANCE生成。

改善三
Android数据库-Room框架
Android数据库-Room框架
改善四
Android数据库-Room框架
Android数据库-Room框架
Android数据库-Room框架
此时,已经基本修改完成。但是ViewModel 的职责是管理界面的数据,数据的获取不应该属于ViewModel,如插入、修改数据等。我们应该创建仓库类,来实现对数据的直接操作。

创建WordRepository

这个类的职责就是获取数据,如本地数据库、或者云端数据库等。
Android数据库-Room框架
Android数据库-Room框架

3、阶段三

使用RecyclerView 呈现列表数据,强调资源的回收,就是滚动出屏幕的视图就会被回收,重复使用,提高资源使用。主要效果为,可以插入多条信息,然后利用RecyclerView 显示在页面上,呈现两种效果,一种是用普通的cell组成,一种是card 形式呈现,外观很相似。两种可以相互切换。

效果图,第一张是普通cell组成,第二张是card cell 组成。
Android数据库-Room框架
Android数据库-Room框架

创建普通cell 单元显示列表信息
Android数据库-Room框架
效果如下图,这是一个cell。
Android数据库-Room框架
MainActivity.java内容
Android数据库-Room框架
Android数据库-Room框架
Android数据库-Room框架
添加点击后出现波纹效果
Android数据库-Room框架
适配器编写
Android数据库-Room框架
Android数据库-Room框架

4、阶段四

数据库结构的改变与版本的迁移

如果数据库需要添加新的一列,需要进行版本迁移,如下图,但是删除某一列时,由于SQLite是轻量级的数据库,不具备Drop 关键字,所以删除列操作比较麻烦。

数据库层面的修改
Android数据库-Room框架
Android数据库-Room框架
UI界面修改

添加一个switch 按钮,点击可以选择是否显示中文意思。

修改适配器
Android数据库-Room框架
Android数据库-Room框架
修改MainActivity.java
Android数据库-Room框架
结束!