Jetpack架构组件_1.基本知识

news2024/10/7 10:25:49

1.什么是Jetpack?

        Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法、减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者可将精力集中于真正重要的编码工作。Jetpack 包含一系列 Android 库,它们都采用最佳做法并在 Android 应用中提供向后兼容性。Jetpack 库是与 Android OS 分开提供的,因此可以独立更新,并且更新频率也可以更高。

        Jetpack是Google为了解决Android架构问题而引入的,但实际上Jetpack能做的不止这些。按照Google官方的说法,“Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写应用程序。Jetpack中的组件可以帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂的任务,以便他们能将精力集中放在业务所需的代码上”。 

        Jetpack主要包括4个方面,如下图所示,分别是架构(Architecture)、界面(UI)、行为(Behavior)和基础(Foundation)

2.安卓架构组件库AAC与Jetpack

        Android 架构组件集合提供关于应用架构的指南,其中包括生命周期管理和数据存留等常见任务的库。使用架构组件可帮助您以稳健、可测试和易维护的方式组织应用结构,且所需样板代码较少。

        架构组件库是 Android Jetpack 的一部分。如下图对应AAC。

3. Jetpack与AndroidX

        在2018年的Google I/O大会上,Google宣布用AndroidX代替Android SupportLibrary,Android Support Library在版本28之后就不再更新了,未来的更新会在AndroidX中进行。不仅如此,AAC(Android Architecture Component)中的组件也被并入AndroidX。所以,当使用Jetpack的组件时,经常会看到以“androidx”开头的包名。如下图所示,从包名的变化,我们便可以看出,Android Support Library与AAC中的各种组件已经迁移到了AndroidX中。         

        Jetpack是AndroidX包下的一部分库,工具类。它和AndroidX中的支持库一样,将频繁更新、长期维护,向后兼容,它并没有归入到Framework层,简单的说它的地位就是一个附加的SDK库。

        Androidx处于System Apps和Java API Framework的位置,它不是Framework的一部分。

4.使用条件

        在AndroidStudio创建一个AndroidX项目时,要注意编译SDK版本设置为Android9.0(API Level 28),Android studio版本要大于等于3.2。如下图使用的是Iguana版本,CompileSDK是34版本是满足的,可以看到扩展包中有许多是androidx开头的。

        

5.JetPack组成介绍

(1)Architecture(架构) 

  •         Data Binding(数据绑定):属于支持库可使用声明式将布局中的界面组件绑定到应用中的数据源。
  •         Lifecycles:管理和感知Activity和Fragment生命周期
  •         LiveData:是一个可观察的数据持有者类。与常规observable不同,LiveData是有生命周期感知的。
  •         Navigation:处理应用内导航所需的一切。
  •         Paging:一次加载or按需加载&显示小块数据。
  •         Room:帮助开发者更友好、流畅的访问SQLite数据库。
  •         ViewModel:以生命周期感知的方式存储和管理与UI相关的数据。
  •         WorkManager:调度预期将要运行的可延迟异步任务。(即便应用程序推出or重启)。

(2)基础-Foundation

  •         Android KTX:一组Kotlin扩展程序;优化了供Kotlin使用的Jetpack和Android API。以更简洁的方式使用Kotlin进行Android开发。
  •         Appcompat:提供向后兼容的API。
  •         Security:按照最佳的安全做法读取加密文件和共享偏好设置。
  •         Multidex:当方法数超过64K时启用多dex文件。
  •         Test:测试框架。

(3)Behavior

  •         相机-CameraX:简化相机应用的开发工作,可向后兼容至Android5.0(API Level21)
  •         下载-DownloadManager:可处理长时间运行的HTTP下载&超时重连。
  •         多媒体-Media&playback:用于媒体播放&路由的向后兼容API。
  •         通知-Notifications:提供向后兼容的通知API,支持Wear和Auto。
  •         权限-Permissions:用于检查和请求应用权限的兼容性API。

(4)UI

  •         动画-Animation&Transitions:提供各类内置动画,也可以自定义动画效果。
  •         表情-Emoji:使用户在未更新系统版本的情况下也可以使用表情符号。
  •         Fragment:组件化界面的基本单位。
  •         布局-Layout:xml书写的界面布局或者使用Compose完成的界面。
  •         调色板-Palette:从调色板中提取出有用的信息。

         

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

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

相关文章

6-继承

6-继承 1、基本语法和方式2、继承的基本特点2.1 三种继承方式相同的基本点2.2 三种继承方式的差别2.3 公有继承的独有特点 3、子类的构造、析构3.1 子类的构造3.2 子类的析构3.3 子类的拷贝构造函数3.4 子类的拷贝赋值 4、多重继承4.1 内存布局4.2 类型转换4.3 名字冲突问题 5、…

EtherCAT协议概述

EtherCAT 是由德国 BECKOFF 自动化公司于2003年提出的实时工业以太网技术。它具有高速和高数据有效率的特点,支持多种设备连接拓扑结构。其从站节点使用专用的控制芯片,主站使用标准的以太网控制器。 EtherCAT 的主要特点如下 : ①泛的适用性&#xff0c…

Python3 笔记:Python的turtle库

Python的turtle库是一个用于绘制图形的库。 举例: import turtle turtle.bgcolor(white) turtle.width(2) sides5 colors["red","yellow","blue","orange","green","purple"] for x in range(60):tu…

基于双PI结构FOC闭环控制的永磁同步电机控制系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于双PI结构FOC闭环控制的永磁同步电机控制系统simulink建模与仿真。 2.系统仿真结果 3.核心程序与模型 版本:MATLAB2022a 64 4.系统原理简介 永磁同步电机&a…

YoloV9改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

文章目录 摘要论文指导PConv在论文中的描述改进YoloV9的描述改进代码与结构图改进方法测试结果总结摘要 在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。 改进方法简单高效,需要发论文的同学不要错过! 论文指导 …

vue页面滚动条触底事件

html 滚动区域外层div添加属性 ref,id,scroll 在mounted函数中使用document设置监控div属性 在mathods中监控滚动事件

Go Redis 实现邮件群发

一、安装 go get github.com/go-redis/redis/v8二、邮箱服务配置,以QQ邮箱为例 三、示例代码 package mainimport ("context""fmt"redis "github.com/go-redis/redis/v8""gopkg.in/gomail.v2""gopkg.in/ini.v1&qu…

让ctexbook章节首页显示页眉

使用ctexbook构建的latex版本的学位论文或者其他用途, 章节的首页不显示页眉,如下图: 如果说,想要在章节的首页设置页眉,该如何设置? \usepackage{fancyhdr} \fancyhf{} \chead{暨南大学硕士学位论文} \cfoot{\thepage…

设计模式:装饰模式(Decorator)

设计模式:装饰模式(Decorator) 设计模式:装饰模式(Decorator)模式动机模式定义模式结构时序图模式实现在单线程环境下的测试在多线程环境下的测试模式分析优缺点适用场景应用场景应用实例模式扩展参考 设计…

抖店起店玩法,2024年最新保姆级抖音小店开店教程

课程下载:https://download.csdn.net/download/m0_66047725/89360739 更多资源下载:关注我。 课程内容: 1-抖音如何精细化选品 2-达人合作的谈判技巧 3-达人合作细节注意事项 4-短视频达人筛选方法与数据维度 5-短视频带货达人分析工具…

XDebug配置极简教程,phpstorm实现http请求断点调试

写这篇的文章的初衷:网络上配置XDebug的文章有很多,XDebug也有官方的文档, PhpStorm也有官方的文档,为什么还要写那? 相信不少人,都有一种感觉,虽然教程很多,但是按教程走一遍,自己的确不能正常调试。 问题出在下面几个方面: 1. 对调试过程中,没有一定的认识,因此…

模板详解:泛型、函数\类模板、特化

文章目录 泛型编程函数模板概念格式原理实例化参数匹配原则 类模板格式实例化 非类型模板参数模板的特化函数模板特化类模板特化全特化偏特化 模板分离编译模板总结 泛型编程 函数重载的缺点: 重载的函数仅仅是类型不同,代码复用率比较低,只…

如何批量提取pdf文件名?批量提取文件夹里的文件名,只要用对方法!

在数字化时代,PDF文件已经成为我们日常工作中不可或缺的一部分。然而,随着PDF文件数量的不断增加,如何高效地管理这些文件成为了一个挑战。批量提取PDF文件名,就是解决这一问题的关键所在。本文将为你介绍几种实用的方法&#xff…

【Qt秘籍】[002]-开始你的Qt之旅-下载

一、Qt的开发工具有哪些? Qt的开发工具概述Qt支持多种开发工具,其中最常见的开发工具是 1.QtCreator 【易上手/有少量bug/适合新手】 2.VisualStudio 【功能强大/易出错/需要更多额外配置】 3.Eclipse 【清朝老兵IDE/不建议使用】 【注意&#xff1…

Apache Impala 4.4.0正式发布了!

历时半年多,Impala 4.4终于发布了!本次更新带来了不少新功能,受限于篇幅,这里简要列举一些,后续文章再挑重点的进行介绍。 支持更多Iceberg表上的语句 支持对 Iceberg V2 表的 UPDATE 语句,用来更新已有数…

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!!

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!! 亲测有效 报错问题解决思路解决方法 报错问题 在运行Python代码时,你可能会遇到以下报错信息: ModuleNotFoundError: No module named pandas这个…

计算机组成原理----原码,反码与补码

目录 1.原码的出现 2.反码的出现 3.补码的出现 4.关于补码 1.原码的出现 我们通常使用"","-"判断数字的正负,而在计算机中,则将二进制的首位当作标记符号,"0"表示正数,"1"表示负数,这样就解决了在计算机中表示数值正负的问题,唯一…

剖析【C++】——类与对象(中)——小白篇—超详解

目录 1.类的6个默认成员函数: 1. 默认构造函数(Default Constructor) 2. 析构函数(Destructor) 3. 拷贝构造函数(Copy Constructor) 4. 拷贝赋值运算符(Copy Assignment Operato…

【Mybatis】映射文件中#{}里的其他属性

#{}里除了可以写接收参数的名称外,还可以设置javaType,jdbcType,mode,numericScale,resultMap,typeHandler,jdbcTypeName这些属性的。 其他的属性除mode(存储过程相关讲到存储过程的时候在讲)外使用方式都…

单链表的相关题目

1.删除链表中给定值val的所有结点 public void removeall(int key) {//由于是删除链表中所有和key值相同的结点,所以可以设置两个ListNode类型的数据,一个在前面,一个在后面.//直到前面的走到链表的最后,这样完成了遍历.//先判断一下这个链表是否为空if(headnull){System.out.…