【Jetpack】Jetpack 简介 ( 官方架构设计标准 | Jetpack 组成套件 | Jetpack架构 | Jetpack 的存在意义 | AndroidX 与 Jetpack 的关系 )

文章目录

  • 一、Google 官方推出的架构设计标准 Jetpack
  • 二、Jetpack 组成套件
  • 三、Jetpack 架构
  • 四、Jetpack 的存在意义
    • 1、提高开发效率
    • 2、最佳架构方案
    • 3、消除样本代码
    • 4、设备系统兼容性
    • 5、改善应用性能
    • 6、测试支持
  • 五、AndroidX 与 Jetpack 的关系





一、Google 官方推出的架构设计标准 Jetpack



Android 架构发展 : Android 架构的发展 途径了 MVC -> MVP -> MVVM 等方案 , 这些架构都 不是 Google 官方提出的 , 都是各个团队 根据自己的需求推出的适合自己的架构方案 ;

Jetpack 是 Google 推出的 架构设计标准 , 是官方推出 架构设计指导方案 ;


借助 Jetpack 提供的一系列的 工具 和 组件 , Android 开发者 可以 快速高效地 构建出 高质量 / 高性能 的应用架构 ;

使用 Jetpack 提供的架构 , 可以 简化 Android 应用开发架构相关内容 , 并且可以 减少格式化样本代码的编写 , 开发者可以使用更多的精力和时间 专注于 业务逻辑 的开发 ;

同时 , 还可以 减少 出错崩溃 的概率 , 内存泄漏 , 降低代码复杂度 ;





二、Jetpack 组成套件



Jetpack 是 Google 官方提出的 , 由 多个 库 组成的 套件 , 这些库包括 :

  • UI 库 : Animation , Transitions , Emoji , Layout , Palette …
  • 架构库 : Data Binding , ViewModel , Lifecycles , LiveData , Navigation , Padding , Room …
  • 行为库 : Download Manager , Permissions , Notifications , Sharing …
  • 基础库 : AppCompat , Android KTX , Multidex , Test …

在这里插入图片描述





三、Jetpack 架构



Jetpack 是 Google 推出的 架构设计标准 , 是官方推出 架构设计指导方案 ;

Jetpack 架构 是 基于 分层结构设计模块化开发设计思想 提出的 ;


Jetpack 提供了一系列的组件类型 :

  • 基础组件 : 提供 基础 功能 , 可以 简化开发 , 提高 代码 可维护性 ; 如 : Android KTX ;
  • 架构组件 : 构建 响应式的 , 高效的 , 可测试 的应用程序 ; 如 : ViewModel 管理 UI 数据模型 , LiveData 用于 响应数据 改变 , Room 管理数据库模块 等 ;
  • UI 组件 : 创建 灵活 , 美观 , 易于扩展 的 UI 界面 ; 如 : ConstraintLayout 约束布局 , RecyclerView 列表 , ViewPager2 组件 ;
  • 测试组件 : 创建 可靠 自动化测试 模块 ; 如 : JUtils , Espresso , UI Automator 等测试组件 ;
  • 功能组件 : 管理 后台任务 , 导航 , 分页 等实际功能 ; 如 : WorkManager 等 ;

Jetpack 架构中 , 每个组件 都有其 相应的 功能 , 根据 项目的需求 , 和 团队的分工 , 将各种组件 进行 组合使用 , 就可以 构成一个 高可靠性的 项目架构 ;

使用 Jetpack 组件组合成的 架构设计 , 可以快速构建 应用程序 , 并且提高程序的稳定性 , 可维护性 ;





四、Jetpack 的存在意义




1、提高开发效率


Jetpack 提供了 大量 现成 的 组件 和 工具 , 可以快速 构建 高质量 / 高性能 的 Android 工程 , 并且可以 提高 代码的 稳定性 , 可维护性 ;

使用 Jetpack 库 , 减少了很多 重复性的 代码工作 , 提高了开发效率 ;


2、最佳架构方案


Jetpack 是 Google 推荐的最佳的架构方案 , 一直在 不断更新 , 并且 兼容之前的 Android 系统版本 ;

使用 Jetpack 可以减少 架构带来 内存泄漏 和 崩溃 ;


3、消除样本代码


使用 Jetpack 开发套件 , 可以轻松进行 工程架构 , 减少不必要的 架构相关的样板代码 , 开发者只需要专心开发自己的逻辑代码即可 ;

Jetpack 提供了一套 UI , 行为 , 架构 相关的解决方案 , 开发者可以不用再架构上浪费时间 , 专心开发自己的逻辑 ;


样板代码示例 : Activity 中管理各种生命周期 ;


4、设备系统兼容性


开发 Android 应用 , 需要 考虑到 Android 的各个版本的特性 , 以及 各个 Android 手机厂商的适配问题 , 需要花费大量的时间精力进行适配工作 ;

使用 Jetpack 可以保证 在 各个 Android 版本 , 各种 Android 设备中 , 保持运行一致 , 可以降低 测试 , 适配 的 工作量 ;

Jetpack 自带设备系统兼容性解决方案 ;


5、改善应用性能


使用 Jetpack 提供的 一系列的 组件 和 工具 , 可以

  • 提高 应用的 性能 ,
  • 提高 代码稳定性 ,
  • 提高 代码可维护性 ,
  • 减少应用崩溃 ,
  • 减少应用内存泄漏 ;

6、测试支持


Jetpack 提供了一系列的 测试组件 ,

借助 Espresso , UI Automator , JUnit 测试组件 ,

可以快速 创建 Android 自动化测试 功能 ,

提高 程序的 质量 , 提高代码的稳定性 ;





五、AndroidX 与 Jetpack 的关系



Google 推出的 AndroidX 库 , 其 更新频率很频繁 , AndroidX 没有并入 SDK , 是因为其 更新频率很高 , 几乎 每个月都要更新 , Android 的 SDK 每次只在新版本发布时才更新 , 基本要半年到一年才能更新一次 ;

官方的 SDK 有很多不完善的地方 , Google 开发了很多开源项目 , 对 SDK 缺陷进行修复 , 这些开源项目最后都并入了 AndroidX 项目 , 其中每个子项目都在更新 , 因此 AndroidX 更新频率很高 ;


AndroidX 与 Jetpack 的关系 :

  • AndroidX 的命名空间 中 包含了 Jetpack 套件 ;
  • 之前的 Android Support Library 已经停止更新 , 官方推荐使用 AndroidX 替代 Android 支持库 ;
  • Android Architecture Component 架构组件 也 并入了 AndroidX ;

官方推出的库 , 除 SDK 之外的都并入到了 AndroidX 命名空间中 ;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot结合MyBatis实现多数据源配置

SpringBoot结合MyBatis实现多数据源配置 一、前提条件 1.1、环境准备 SpringBoot框架实现多数据源操作,首先需要搭建Mybatis的运行环境。 由于是多数据源,也就是要有多个数据库,所以,我们创建两个测试数据库,分别是…

使用最新android sdk 将jar文件编译成dex

最近需要一些比较骚的操作,所以需要将gson编译成dex。 因为手上有jar包,所以就拿出了android sdk准备一把入魂,结果报错不断,让人无奈。只好根据报错来调整编译步骤,不得不为安卓环境更新Debug。 1、dx变d8 并不确定…

Undefined symbols for architecture arm64

解决问题之前,先了解清晰涉及到的知识点: iOS支持的指令集包含:armv6、armv7、armv7s、arm64,在项目TARGETS---->Build Settings--->Architecturs 可以修改对应的指令集,目前Standard Architectures(arm64, arm…

Windows MySQL服务安装及问题解决方案

Windows MySQL服务安装及问题解决方案 安装及配置步骤一:官网下网MySQL安装包步骤二:设置环境变量步骤仨:配置MySQL,ini配置文件步骤四:初始化MySQL步骤五:开启MySQL服务步骤六:测试是否安装成功步骤七&…

CMS指纹识别

一.什么是指纹识别 常见cms系统 通过关键特征,识别出目标的CMS系统,服务器,开发语言,操作系统,CDN,WAF的类别版本等等 1.识别对象 1.CMS信息:比如Discuz,织梦,帝国CMS&#xff0…

【SpringMVC】Jrebel 插件实现热部署与文件上传

目录 一、JRebel 1.1 Jrebel介绍 1.2 Jrebel插件下载 1.3 Jrebel服务下载并启动 1.4 在线生成GUID 1.5 JRebel激活 1.6 相关设置 注意❗ 二、文件上传、下载 2.1 导入pom依赖 2.2 配置文件上传解析器 2.3 文件上传表单设置 2.4 文件上传实现 2.5 文件下载实现 2…

代码随想录算法训练营第十八天|513. 找树左下角的值|112. 路径总和|106. 从中序与后序遍历序列构造二叉树

513. 找树左下角的值 题目:给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 示例 1: 输入: root [2,1,3] 输出: 1 思路一:层序遍历,最后一层的第一个元素,即…

基于51单片机DS18B20温度及电流检测-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器,液晶1602显示,DS18B20检测温度,电流检测。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void lcd_init() //lcd 初始化设置子函数,不带参数 ,0x…

持安科技入选数说安全《2023中国网络安全市场年度报告》

近日,网络安全产业研究平台数说安全发布《2023中国网络安全市场年度报告》,报告共分为158页核心报告,及番外篇《网安融资新星及融资过亿企业介绍》,作为以甲方身份创业的零信任办公安全明星企业,持安科技以网安融资新星…

MATLAB R2023a完美激活版(附激活补丁)

MATLAB R2023a是一款面向科学和工程领域的高级数学计算和数据分析软件,它为Mac用户提供了强大的工具和功能,用于解决各种复杂的数学和科学问题。以下是MATLAB R2023a Mac的一些主要特点和功能: 软件下载:MATLAB R2023a完美激活版 …

select多选回显问题 (取巧~)

要实现的效果: 实际上select选择框,我想要的是数组对象,但是后端返回来的是个字符串。 以下是解决方法: 以上是一种简单的解决方法~ 也可以自己处理数据或者让后端直接改成想要的格式。

Kafka3.0.0版本——消费者(手动提交offset)

目录 一、消费者(手动提交 offset)的概述1.1、手动提交offset的两种方式1.2、手动提交offset两种方式的区别1.3、手动提交offset的图解 二、消费者(手动提交 offset)的代码示例2.1、手动提交 offset(采用同步提交的方式…

Python爬虫 教程:IP池的使用

前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 一、简介 爬虫中为什么需要使用代理 一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率…

[SICTF 2023 #Round2] Crypto,PWN,Reverse

似乎很久没写了。 周五到周日,两天的这个比赛,有些东西还真是头回用,值得纪录一下。 Crypto 密码这块这届还是比较简单的,没有复杂的题,但量大分多。 【签到】古典大杂烩 给了一堆emoji的图 🐩&#x…

GCP Architect之VPN+Network

VPN 搜索结果共计:11 [单选]As part of implementing their disaster recovery plan, your company is trying to replicate their production MySQL database from their private data center to their GCP project using a Google Cloud VPN connection. They are experien…

OpenCV(三十四):轮廓外接最大、最小矩形和多边形拟合

目录 1.轮廓外接最大矩形boundingRect() 2.轮廓外接最小矩形minAreaRect() 3.轮廓外接多边形approxPolyDP() 1.轮廓外接最大矩形boundingRect() Rect cv::boundingRect ( InputArray array ) array:输入的灰度图像或者2D点集&#xff0c;数据类型为vector<Point>或者M…

Go语言的[GPM模型]

在go中,线程是运行Groutine的实体,调度器的功能是把可以运行的Groutine分配到工作线程上 GPM模型 M与P的数量没有绝对的数量关系,当一个M阻塞时,P就会创建一个或者切换到另一个M,所以即使设置了runtime.GOMAXPROCS(1) 也可能创建多个M出来; 当M发现给自己输送G协程的那个P队列为…

《AI一键生成抖音商品种草文案》让你秒变带货王!

在这个数字化的时代&#xff0c;我们的生活被各种应用所包围&#xff0c;其中&#xff0c;抖音作为一款短视频分享平台&#xff0c;已经成为了我们生活中不可或缺的一部分。然而&#xff0c;作为一名抖音创作者&#xff0c;你是否曾经遇到过这样的困扰&#xff1a;在创作商品种…

C#程序到底从哪里开始看,从Main函数开始,那么Main函数是什么?

视觉人机器视觉粉丝问我,拿到自己公司得架构,问我,C#程序到底从哪里看,从Main函数开始,那么Main函数是什么? Main()函数 Main()是C#应用程序的入口点,执行这个函数就是执行应用程序。也就是说,在执行过程开始时,会执行Main()函数,在Main()函数执行完毕时,执行过…

【JavaSpring】spring接口-beanfactory和applicationcontext与事件解耦

beanfactory 1.applicationcontext的父接口 2.是Spring的核心容器 功能 表面只有getBean&#xff0c;但实现类默默发挥了巨大作用 1.管理所有bean 2.控制反转 3.基本的依赖注入 applicationcontext 功能 1.继承了MessageSource&#xff0c;有了处理国际化资源的能力 …