首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Android笔记】Kotlin结合Jetpack构建MVVM

Jetpack Jetpack 一个多个组成套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行代码,让开发者精力集中编写重要代码。...存储唯一依赖于其他多个类;在本例中,存储区依赖于持久性数据模型和远程后端数据源。...MVVM MVVM即Model - View - ViewModel缩写,它出现是为了图形界面与业务逻辑,数据模型进行解耦。 MVVM也是Google推崇一种Android项目架构模型。...之前学习Jetpack组建,大部分都是为了能够更好地架构MVVM应用程序而设计。...view:Activity,Fragment和布局文件,用会用到DataBinding组件 dao:Room数据操作 application:实例化全局文件和获取全局上下文。

61880

GitHub 热点速览 Vol.21:Go 新手起手式,学就完事儿了

当然,前人言传身教最佳实践也是不一个不可放过耗资源,比如 Jetpack MVVM 最佳实践。本期主题项目为你选择了 macOS 神器,工欲善其事必先利器,好用开发环境也提升你学习效率。...增长数:1100+ C-Plus-Plus 一个用 C++ 实现算法实践,如果你想了解算法的话,不妨看下这个项目。...GitHub 地址→https://github.com/microsoft/PowerToys 2.4 Jetpack MVVM 最佳实践:Jetpack-MVVM-Best-Practice 本周...在这个项目中,作者展示 Jetpack MVVM 如何蕴繁于简地原本十分容易出错、一出错就会耽搁半天时间开发工作,通过寥寥几行代码轻而易举地完成。...除了在蕴繁于简代码中掌握 MVVM 最佳实践,你还可以从这个开源项目中获得内容 包括: 整洁代码风格和标准资源命名规范。 对视图控制器知识点深入理解和正确使用。

84520
您找到你想要的搜索结果了吗?
是的
没有找到

Android Jetpack - Room

Room 简介 Room 持久化提供了一个基于 SQLite 抽象层,以便在利用 SQLite 全部功能同时实现更强大数据访问 Room 帮你 App 在设备上创建一个缓存,并作为此 App...使用@Database注释类应满足以下条件: 继承了 RoomDatabase 抽象类 在注解中包含与数据相关联实体类列表 包含一个无参抽象方法,并返回使用 @Dao 注释类。...DAO 包含用于访问数据方法 该应用程序使用 Room 数据来获取与该数据关联数据访问对象或 DAO。...Repository 简介 什么 Repository ? Repository 类抽象出对多个数据源访问。存储不是体系结构组件一部分,但是建议代码分离和体系结构最佳实践。...只有一个参数,并被 @PrimaryKey 注释作为主键,此处 @ColumnInfo 作用是给此参数取一个别名 c_word ,该别名会被真实记录于数据字段中,如果在同一张表中存在多个可能重复字段时例如

1.9K70

安卓开发深度技术实战详解

MVVM 架构核心思想视图、数据和逻辑分离,以便于开发者更好地管理和维护代码。在安卓开发中,MVVM 架构被广泛应用于视图层和数据层之间交互。...下面一个 MVVM 架构代码实例,它实现了一个简单计算器: kotlinCopy codeclass MainActivity : AppCompatActivity() { private...在安卓开发中,使用数据库存储数据一种非常常见做法。...当然,这些技术只是冰山一角,还有许多其他值得探索技术,希望读者能够深入研究,不断学习和实践。 三、协程 协程安卓开发中一个非常重要概念,它可以让异步操作更加简单、高效、易读。...四、数据 在安卓开发中,使用数据库存储数据一种非常常见做法。安卓提供了 SQLite 数据,同时也支持其他数据,如 Room、Realm 等。

83030

MVVM数据持久化(二)——ROOM使用

MVVM框架搭建(一)——背景 MVVM框架搭建(二)——项目搭建 MVVM框架搭建(三)——网络请求 MVVM数据持久化(一)——ROOM集成 ROOM使用以及实践 上一篇文章,我们已经介绍了...当中一个V层 三者联系起来 */ class MainActivity : AppCompatActivity() { private lateinit var mBinding: ActivityMainBinding...但是就目前方法来说,每次都需要写模板化代码太多了,那么我们有没有什么办法简化呢,答案必然有的。 后面的文章我们会持续介绍到,希望大家持续关注。...问题 我们可以看到,对于ROOM存储包括之前用GreenDao这种类似的存储都有一个问题,就是根据数据对应格式一个键里面有对应相应值,那么当我们Json返回数据当中包含JsonArray的话...,以前用方法,建一个实体 在存时候使用 public static String boxing(List List) { if (List == null ||

70750

Android 架构组件 - 让天下没有难做 App

AAC 当做 Android 架构领域最佳实践,它出现一定程度上避免了很多不必要轮子。...一个 App 从全局来看,可以划分为三部分:首先是 UI Controller 层,包含 Activity 和 Fragment;其次 ViewModel 层,既可以做 MVVM VM、MVP ...Room 数据作为数据持久层,其重要性不言而喻,当设备处于离线状态时,数据用于缓存数据;当多个 App 需要共享数据时,数据可以作为数据源,但是基于原生 API 徒手写 CRUD 实在痛苦,虽然...Room SQLite 之上应用抽象层,而 SQLite 一个位于 Android Framework 层内存型数据。...Paging 分页逻辑拆解为三部分: 数据源 DataSource 数据块 PagedList 数据展示 PagedListAdapter DataSource 数据来源于后端服务或者本地数据

1.2K20

livedatabus详解,阿里如何用他来做淘宝架构

AAC 当做 Android 架构领域最佳实践,它出现一定程度上避免了很多不必要轮子。...一个 App 从全局来看,可以划分为三部分:首先是 UI Controller 层,包含 Activity 和 Fragment;其次 ViewModel 层,既可以做 MVVM VM、MVP ...Room 数据作为数据持久层,其重要性不言而喻,当设备处于离线状态时,数据用于缓存数据;当多个 App 需要共享数据时,数据可以作为数据源,但是基于原生 API 徒手写 CRUD 实在痛苦,虽然...Room SQLite 之上应用抽象层,而 SQLite 一个位于 Android Framework 层内存型数据。...除了数据适配之外,ViewModel 还有一个强大用法 —— Fragment 之间共享数据,这样 ViewModel 又扮演了 FLUX 模式中 store 这一角色,多个页面(fragment

1.1K30

手把手从零开始学习入门mybatis

简介 MyBatis 支持定制化 SQL、存储过程以及高级映射优秀持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。...开发环境,我们需要一个用于开发数据;测试环境,我们需要一个用于系统测试数据;生产环境,我们需要一个保存真实数据生产数据。...因为DAO层要做只是后面三步工作,至于如何连接数据、连接哪个数据DAO不关心。她需要一个能够与数据交互,交执行SQL语句对象。在使用JDBC时,就是Connection对象。...答案肯定,在Mybatis中向DAO层提供这个能够与数据交互并执行SQL语句对象叫做SqlSession。这个Mybatis最核心一个对象。...使用 SqlSessionFactory 最佳实践在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏味道(bad smell)”。

44910

代码分层

我们问题在于Mapper层和DAO代码一模一样,只是为了使用@Mapper这个注解?不管叫 XXXDAO 还是 XXXMapper,都暗示了它们与数据关系。...输入和输出 输入参数和输出参数隔离,一般稍大系统都是分层设计,最底层数据存储层,数据,最上层对外提供接口调用应用层,那每一层都有关联数据对象,所以需要做相应区分。...对于一些难以说清楚逻辑,我这么区分(不一定正确,但你可以参考):对于传统行业来说,原来手动流程变为信息化流程,都属于业务逻辑;而由信息化带来增值服务(比如自动发短信通知),就属于应用逻辑,...在 DDD 诞生之前,这些模式就已经存在了,《企业应用架构模式》中甚至还提出了很多可以替代模式。DDD 只是把这些模式进行组合,形成了一套以领域模型模式为基础最佳实践。...不要为了用而用DDD,不管代码分层是不是按DDD,最重要领域模型方式编程。 代码分层,适合自己最佳实践才是最好,但是要多学习借鉴。

43310

时候更新手里武器了—Jetpack架构组件简析

今天给大家带来Jetpack中架构组件,这个模块组件可以说就是为MVVM框架服务,当然每个也都是可以单独使用。...迫不及待了吧,跟随我一起看看每个神奇之处。 数据绑定 “数据绑定一种支持,借助该,您可以使用声明性格式(而非程序化地)布局中界面组件绑定到应用中数据源。...2)可观察数据对象 可观察性一个对象将其数据变化告知其他对象能力。通过数据绑定,您可以让对象、字段或集合变为可观察。...官方文档 Demo代码地址 Navigation “导航 Navigation 组件旨在用于具有一个主 Activity 和多个 Fragment 目的地应用。...” 所以Paging就是一个分页,主要用于Recycleview列表展示。下面我就结合Room说说Paging用法。

2.9K20

「首席架构看领域驱动设计」领域驱动设计和开发最佳实践

我们查看技术主管和架构师在实现工作中可以使用指导方针、最佳实践、框架和工具。...DAO关系数据和应用程序之间契约。它封装了来自web应用程序数据CRUD操作细节。另一方面,存储一个单独抽象,它与dao交互,并向域模型提供“业务接口”。...存储使用域通用语言,使用所有必要dao,并以域所理解语言为域模型提供数据访问服务。 DAO方法细粒度,更接近于数据,而存储方法粗粒度,更接近于域。...另外,一个存储类可能注入了多个DAO存储DAO使域模型与处理数据访问和持久性细节分离。 域对象应该仅依赖于存储接口。这就是为什么注入存储而不是DAO会产生一个更干净域模型原因。...从DDD角度来看,DTO还有助于维护服务层和UI层之间分离,其中DO用于域,服务层用于表示层,DTO用于表示层。 Dozer框架用于一个多个域对象组装到一个DTO对象中。

1.6K30

Android MVVM框架搭建(三)MMKV + Room + RxJava2

使用 五、源码 前言   在上一篇文章中,我讲述了怎么在MVVM框架中搭建网络访问框架,并通过一个必应每日壁纸做了一次请求接口访问演示,这篇文章就需要来讲述Android端本地数据使用和在MVVM...,因此就先不做介绍,改成了MMKV,这个个人感觉使用起来比DataStore要简单一些,这同样一个很实用。   ...而下面关于创建数据、创建表、创建Dao类,都与注解有关系。 1. @Entity   下面我们来进行创建,在此之前我现在com.llw.mvvm包下新建一个db包。...而这里还有一个构造方法,为了写数据方便一些,这个方法我们并不需要写入到数据中,因此一旦我们写了一个有参数构造方法则需要通过@Ignore这个构造方法忽略掉,同时也要增加一个无参构造方法,当然了@...CustomDisposable   针对于两种默认可以写一个自定义工具类,用于处理两种不同结果处理。

1.2K31

Android MVVM框架搭建(三)MMKV + Room + RxJava2

使用 五、源码 前言   在上一篇文章中,我讲述了怎么在MVVM框架中搭建网络访问框架,并通过一个必应每日壁纸做了一次请求接口访问演示,这篇文章就需要来讲述Android端本地数据使用和在MVVM...,因此就先不做介绍,改成了MMKV,这个个人感觉使用起来比DataStore要简单一些,这同样一个很实用。   ...而下面关于创建数据、创建表、创建Dao类,都与注解有关系。 1. @Entity   下面我们来进行创建,在此之前我现在com.llw.mvvm包下新建一个db包。...而这里还有一个构造方法,为了写数据方便一些,这个方法我们并不需要写入到数据中,因此一旦我们写了一个有参数构造方法则需要通过@Ignore这个构造方法忽略掉,同时也要增加一个无参构造方法,当然了@...CustomDisposable   针对于两种默认可以写一个自定义工具类,用于处理两种不同结果处理。

1.1K20

【Spring 篇】MyBatis DAO层实现:数据之舞精灵

它负责处理数据CRUD操作,让业务逻辑与数据访问分离,提高代码可维护性。 场景1:DAO实现步骤 接下来,我们详细介绍如何在MyBatis中实现DAO层。...我们以一个用户管理示例来说明: 步骤1:创建数据模型 首先,我们需要定义一个数据模型,用于映射数据表。...数据会话接口,用于执行SQL语句、获取Mapper接口实现类等操作。...我们可以通过在mybatis-config.xml中配置事务管理器来实现事务控制。 场景3:DAO最佳实践 在实现DAO层时,有一些最佳实践可以帮助我们写出更清晰、可维护代码。...通过这篇博客,我们深入了解了MyBatis DAO实现步骤、核心概念和最佳实践

70110

Android MVVM框架使用(十一)(功能开发)记事本

Android MVVM框架使用 功能开发之记事本 前言 正文 一、记事本页面 二、编辑页面 三、增加笔记表 ① Bean ② Dao ③ 数据升级迁移 ④ 新增存储类 ⑤ 新增ViewModel...⑥ 添加笔记 四、显示笔记列表 五、修改笔记 六、删除笔记 七、源码 八、开心一下 前言   对于一些常规MVVM框架搭建也有一些了,那么对于一些小功能开发也需要说明一下,注重实践,本文实践一下。...一、记事本页面 既然要写一个记事本,那么首先要创建一个页面,我代码依然还是写在MVVM框架中,在activity包下新建一个NotebookActivity,对应布局activity_notebook.xml...二、编辑页面   编辑页面可用于新增笔记、查看笔记、修改笔记、删除笔记,一个页面要具备这些功能,需要好好设计一下,先完成简单界面设计。...,一个用于查询,一个用于添加。

95340

常见Mybatis面试题详细讲解大全

3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口工作原理是什么?Dao接口里方法,参数不同时,方法能重载? 4、Mybatis如何进行分页?...分页插件原理是什么? 5、简述Mybatis插件运行原理,以及如何编写一个插件。 6、Mybatis执行批量插入,能返回数据主键列表? 7、Mybatis动态sql做什么?...能简述一下动态sql执行原理不? 8、Mybatis如何sql执行结果封装为目标对象并返回?都有哪些映射形式? 9、Mybatis能执行一对一、一对多关联查询?...3、最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口工作原理是什么?Dao接口里方法,参数不同时,方法能重载?...6、Mybatis执行批量插入,能返回数据主键列表? 答:能,JDBC都能,Mybatis当然也能。 7、Mybatis动态sql做什么?都有哪些动态sql?

1.9K51

MyBatis面试题

使用MyBatismapper接口调用时有哪些要求? 最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口工作原理是什么?...Dao接口里方法,参数不同时,方法能重载 MyBatis动态sql做什么?都有哪些动态sql?能简述一下动态sql执行原理不? MyBatis如何进行分页?分页插件原理是什么?...SQL语句依赖于数据,导致数据移植性差,不能随意更换数据。 相同点 都是对jdbc封装,都是持久层框架,都用于dao开发。...6)MappedStatement 对象:在 Executor 接口执行方法中有一个 MappedStatement 类型参数,该参数对映射信息封装,用于存储要映射 SQL 语句 id、参数等信息...最佳实践中,通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口工作原理是什么?

97220

springboot第6集:PO、VO、DAO、BO、DTO、POJO 能分清

持久对象通常与数据交互,可以被存储和检索。 在面向对象编程中,持久化指将对象状态保存到某个非易失性存储介质中,以便在程序结束后能够重新恢复对象状态。...没有标识:值对象相等性通过其属性来确定,没有唯一标识符。 可以被共享:多个对象可以引用同一个值对象,因为它们状态不可变。...DAO 通常用于底层数据存储细节与上层业务逻辑分离,从而提高代码可重用性和可维护性。 DAO 接口主要包括以下几个方面: CRUD 操作:DAO 接口提供了增删改查等基本数据操作方法。...BO 层可以底层 DAO 操作组合成一个完整事务,并在必要时候进行回滚操作。 对象映射:BO 层负责底层数据存储数据模型与上层 Presentation 层视图模型进行映射。...在实践中,BO 层通常由一些业务逻辑比较复杂方法组成,这些方法可能会对多个数据表进行操作,并且需要进行一定对象映射和转换。

44620

git worktree 命令

概述 git worktree 命令允许你同时使用和/或管理多个工作树。 那么什么工作树呢?你已经在使用一个,只是你可能不知道。或者你可以将其称为“工作副本”。...当你以经典方式克隆存储(或使用创建新存储git init)时,git 创建所谓“主工作树”: 1..git它克隆文件夹中“裸”存储 2.它在裸存储之上创建了一个主工作树;你可能已经知道只是...如果这样,那么你熟悉“我提交所有我在 WIP 中拥有的东西”方法或隐藏管理地狱。 同时检查一个以上分支不是梦想?这就是为什么。...2.主要工作树添加到 mvvm 文件夹,比裸存储高一级;️ 这种结构纯属个人选择,你可以在任何你想要地方克隆存储,并在任何你想要地方签出分支 3.目录更改为新创建工作树 4.存储中提交文件以与以前相同方式显示...同样功能适用于工作树:你可以检查其他分支,你可以存储修改后文件,你可以提交文件,你可以变基,合并等等… 这里唯一需要注意一个分支一次只能在一个工作树中签出。

46110

MVVM数据持久化(一)——ROOM集成

MVVM数据持久化 之前我们分别介绍了MVVM框架悲剧,项目搭建以及网络请求,接下来在这篇文章当中,我们来聊一聊MVVM数据持久化问题,也就是我们常说缓存 Room Room持久提供了一个SQLite...用@Database注解类应满足以下条件: 一个继承RoomDatabase抽象类。 在注释中包含与数据相关联实体列表。 包含一个具有0个参数抽象方法,并返回用@Dao注释类。...DAO: 包含用于访问数据方法。 以及这三者之间关系图: ?...Dao负责操作数据方法,也就是说我们一些操作数据动作都是在这里完成。不同我们不需要这些都用Dao类当中注解来定义查询。...我们需要创建一个AppDatabase,这个类包含了所以Entity以及操作他们DAO

1.5K20
领券