[ Android ] Google JetPack架构指南

news/2025/1/8 21:03:29/

文章目录

          • 架构原则
          • 架构分层
          • 关于DomainLayer
          • 架构选型参考
          • JetPack架构组件
          • 参考网站

架构原则
  • UI和数据分离,不要将所有代码写在Activity和Fragment里面

  • 数据驱动UI,最好是持久性数据模型

  • 单一数据源,集中修改数据,比如基于DatabaseSource,ViewModel等

  • 单向数据流,界面状态修改向单个方向流动,数据修改事件朝相反方向流动

架构分层
  • UI Layer(UI Element + UI State Holder)
  • Data Layer(Data Repository + Data Source)
  • Domain Layer(UseCase,Optional)
关于DomainLayer

领域层,可选层,当特定功能代码较多,或者复用性较强时

可以将其抽取封装层DomainCase类,从而可以在多个UiStateHolder和DataRepository中共享

架构选型参考
  • ViewModel + UiState + StateFlow/ComposeState
  • UseCase + DataRepository + DataSource(Remote+Local)+ DAO
  • Coroutine + Flow + Room + Retrofit
  • Compose + Navigation + Paging
JetPack_28">JetPack架构组件
  • Navigation:界面导航
  • ViewPager:轮播图
  • Paging:分页加载
  • Room:数据库
  • DataStore:数据存储
  • Hilt:依赖注入
  • WorkManager:持续性任务调度
参考网站

http://www.ppmy.cn/news/1561632.html

相关文章

【小程序开发】- 小程序版本迭代指南(版本发布教程)

一,版本号 版本号是小程序版本的标识,通常由一系列数字组成,如 1.0.0、1.1.0 等。版本号的格式通常是 主版本号.次版本号.修订号 主版本号:当小程序有重大更新或不兼容的更改时,主版本号会增加。 次版本号&#xff1a…

Java基于SSM框架的影院选座系统小程序【附源码、文档】

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

【Altium】AD使用智能粘贴功能把多个网络标签改成端口

1、 文档目标 使用智能粘贴功能把多个网络标签(net lable)改成端口(port) 2、 问题场景 客户有一份原理图,网络用的是net label,没用Port,然后创建一个sheet symbol,但是sheet sy…

GoZero项目中解决`go.mod`和`go.sum`校验和不匹配问题的解决方案

在使用GoZero框架进行微服务开发时,项目依赖管理是非常重要的,Go模块(Go Modules)为我们提供了一个可靠的工具来管理依赖。在这个过程中,go.mod和go.sum文件起着至关重要的作用,它们确保了项目的依赖版本和…

解读注解@SpringBootApplication

SpringBootApplication 注解 是 Spring Boot 项目中非常核心的注解,通常用于标注 Spring Boot 应用的启动类。它是一个复合注解(composite annotation),包含了多个重要的功能。在 Spring Boot 2.5.6 中,它的作用和原理…

在Mysql环境下对数据进行增删改查

一、插入数据: insert into 表名 [(字段名)] values (字段对应的值1,字段对应的值2,…)[,(字段对应的值1,字段对应的值2,…)]; insert into students (id,name,age,height,gender,cls_id,is_delete) values (0,小明,18,180.00,2,1,0)在学生表中插入“小明”数据的…

【C语言】可移植性陷阱与缺陷(八): 随机数的大小

在C语言编程中,随机数的生成和使用是一个常见的需求。然而,由于不同平台上的C标准库实现可能存在差异,随机数的生成和使用也可能面临可移植性问题。本文将深入探讨C语言中随机数的大小与可移植性相关的陷阱与缺陷,并提供相应的解决建议。 一、随机数大小的相关概念 1.1. 数…

vue2新增删除

&#xff08;只是页面实现&#xff0c;不涉及数据库&#xff09; list组件&#xff1a; <button click"onAdd">新增</button><el-table:header-cell-style"{ textAlign: center }" :cell-style"{ textAlign: center }":data&quo…