Android JetPack架构——结合记事本Demo一篇打通对Sqlite的增删改查结合常用jetpack架构应用

本文详细介绍了如何使用Android Jetpack的Room组件进行数据库操作,结合MVVM架构实现记事本应用。通过创建数据库实体类、管理类、 Dao接口,以及使用Repository和AsyncTask处理异步操作,实现了增删改查功能。此外,还探讨了使用ViewModel和LiveData的原因,以及它们在数据与UI解耦中的作用。
摘要由CSDN通过智能技术生成

为什么要用Jetpack?

========================================================================

关于为什么要用Jetpack,我参考了许多的博客和官方文档,开阔了我对Android生态圈的理解和认识,在Jetpack推出前出现的许许多多强大的第三方框架与语言,典型代表无疑是强大的RxJava在Jetpack仍然有许多粉丝在一些功能在用它来替代Jetpack中的一些组件。

比如Jetpack衍生出的目前十分火热的MVVM架构(下方记事本的编写中将采用,你可以在代码耦合性中体会到它与传统MVC架构或之后出现MVP架构之间的不同),其中核心组件LiveData其实在RxJava中早已经可以实现,还有需要使用Jetpack嘛?

答案是肯定的,大量的第三方框架与应用很多时候并不是最佳实现,尤其在Google对Android进行不断更新改进的情况下。Android Jetpack于谷歌而言,这是他们重新整理和统一安卓生态环境决心的体现,Android Jetpack所展现的内容,也是谷歌想拓展和维护的方向。于长期苦恼于第三方库选择的广大Android开发者而言,这是谷歌为我们提供的一盏明灯。

JetPack官方架构模式

========================================================================

以下是Google官方推荐的架构模式

在这里插入图片描述

使用此架构能带来什么好处?


  • UI和业务逻辑解耦。

  • 有效避免生命周期组件内存泄漏。

  • 提高模块可测试性。

  • 提高应用稳定性,有效降低以下异常发生概率。

针对Jetpack架构中繁多的组件,下面我具体介绍一款数据库交互组件Room。其余组件在Demo中使用也会做相应说明

什么是Room?为什么要使用Room?

==============================================================================

Room是Google提供的一个ORM库。

Room持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制。

Room组件架构体系

=====================================================================

Entity,Dao,Database为Room的3大基本组件,不同组件之间的关系如图

Android架构组件(四):Room | Power

Database:包含数据库持有者,并作为应用已保留的持久关系型数据的底层连接的主要接入点

使用方法:用@Database来注解类,且使用 @Database注释的类应满足以下条件

  • 是扩展RoomDatabase的抽象类。

  • 在注释中添加与数据库关联的实体列表。

  • 包含具有 0 个参数且返回使用 @Dao 注释的类的抽象方法。

在运行时,可以通过调用 Room.databaseBuilder()Room.inMemoryDatabaseBuilder() 获取 Database 的实例。

Entity:表示数据库中的表

使用方法:用@Entit来注解实体类。

Dao:提供访问数据库的方法

使用方法:@Dao用来注解一个接口或者抽象方法。

记事本应用讲解

==================================================================

Room作为JetPack架构组件中关于SQLite数据库的架构组件,对应有着自己的知识体系。下面通过记事本Demo对Room本身组件结合MVVM架构所涉及的知识体系做一个总结.

由于涉及到另外一些组件,在有使用到时会做简要介绍.

在这里插入图片描述

记事本Demo效果图:

在这里插入图片描述

1.编写Room数据库


1.1 编写数据库实体类

@Data

@Entity(tableName = “note”)

public class Note implements Serializable {

@PrimaryKey(autoGenerate = true)

private int id;

@ColumnInfo(name = “title”)

private String title;

@ColumnInfo(name = “content”)

private String content;

@ColumnInfo(name = “last_

  • 18
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值