Jetpack架构组件_1.基本知识

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.rhkb.cn/news/333824.html

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

相关文章

Teamcenter 查询包含Assembly的ItemRevision

问题描述 需要得到所有包含Assembly的ItemRevision。 TC OOTB的查询方式没有可用的,需要在Query Builder中进行自定义。 进一步分析,如果ItemRevision包含Assembly,其必定包含BOMViewRevision。 解决方案 自定义如下查下。 注意&#xff1…

当代人工智能三教父——深度学习三巨头

文章目录 引言 人物介绍 突出贡献 专业名词解释 引言 今天下午闲来无事翻阅了一下csdn首页的头条文章——《27 岁天才创始人 Joel Hellermark 分享了自己和“AI 教父” Geoffery Hinton 的最新采访》 感觉挺有意思,就从头到尾的看了一遍,里面有很多…

SAP 根据报错消息号快速定位问题

通常用户在业务的操作过程中,经常会遇到报错信息,有些报错是系统控制抛出的信息,但是有些报错的信息是根据不同地点业务场景对填写的数据进行判断校验,然后给出的报错信息,正常情况报错信息一般是有文本,或…

如何更好进行多媒体展厅设计

1、明确设计目标 在展厅之前要明确设计目标,这包括了展厅的主题、目的和受众等,以及希望通过展厅传达的信息和形象。只有明确了设计目标,才能有针对性地进行设计,确保展厅的效果符合预期。 2、合理规划空间布局 空间布局要合理规划…

Stable Diffusion AI绘画:从提示词到模型出图的全景指南

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

飞睿智能高精度、低功耗测距,无线室内定位UWB芯片如何改变智能家居

在数字化和智能化快速发展的今天,定位技术已经成为我们日常生活中不可或缺的一部分。然而,传统的GPS定位技术在室内环境中往往束手无策,给我们的生活带来了诸多不便。幸运的是,随着科技的不断进步,一种名为UWB&#xf…

【XR806开发板试用】基础篇,从零开始搭建一个LCD彩屏时钟(ST7735S驱动)

本文从搭建环境开始,step by step教大家使用XR806实现驱动SPI屏幕(ST7735S驱动),并连接WiFi实现ntp对时,最终实现把时间显示到屏幕上。 #1. 搭建开发环境 1. 安装编译环境所需的依赖包 基于ubuntu 20.04,按…

【高阶数据结构(七)】B+树, 索引原理讲解

💓博主CSDN主页:杭电码农-NEO💓   ⏩专栏分类:高阶数据结构专栏⏪   🚚代码仓库:NEO的学习日记🚚   🌹关注我🫵带你学习更多数据结构   🔝🔝 高阶数据结构 1. 前言2. B树讲解…

【Web】CISCN 2024初赛 题解(全)

目录 Simple_php easycms easycms_revenge ezjava mossfern sanic Simple_php 用php -r进行php代码执行 因为ban了引号,考虑hex2bin,将数字转为字符串 php -r eval(hex2bin(16进制)); 注意下面这段报错,因为加不了引号,开…

【网络原理】HTTPS详解

一.HTTPS的相关基本概念 HTTPS:由于HTTP协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况. 可能会出现运营商劫持,黑客入侵等不利影响, 因此就引入了HTTPS,其本质上就是在HTTP协议的基础上,引入了一个加密层SSM.什么是运营商劫持? 例如我们要…

【服务器报错】Pycharm运行服务器代码提示 can‘t open file “本地文件路径“

1. 问题 Pycharm连接远程服务器,代码已经同步,运行时候报错 #模拟报错 bash: line 0: cd: G:/python/hhh/Hi: No such file or directory /home/hhh/anaconda3/envs/hard/bin/python: cant open file G:/python/hhh/hi/hei.py: [Errno 2] No such file…

SpringBootTest测试框架五

示例 package com.xxx;import com.xxx.ut.AbstractBasicTest; import com.xxx.ut.uttool.TestModel; import com.xxx.ut.uttool.TestModelEnum; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired;public class QueryXXXImp…

Keras深度学习框架第二十讲:使用KerasCV中的Stable Diffusion进行高性能图像生成

1、绪论 1.1 概念 为便于后文讨论,首先进行相关概念的陈述。 Stable Diffusion:Stable Diffusion 是一个在图像生成领域广泛使用的技术,尤其是用于文本到图像的转换。它基于扩散模型(Diffusion Models),这…

软件测试金字塔,对号入座,你在哪层?

自从学习了软件测试,脑袋也清晰了,目标也明确了,就是不知道学到哪里了.中间有很多的困难也有很多成就感,你目前在那个阶段呢? 初级测试工程师 技能要求:需求分析,使用等价类边界值等方法进行用例设计,执行功能测试,发现提交跟踪bug,使用禅道,会在测试中会操作数据库进行检查和…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

css3 笔记02

目录 01 过渡 02 rotate旋转 03 translate函数 04 真正的3D 05 动画 06 阴影 07 自定义字体库 08 自定义动画库 01 过渡 过渡属性的使用: transition-property:要过渡的css属性名 多个属性用逗号隔开 过渡所有属性就写all transition-duration: 过渡的持续时间 s秒 …

万博智云×华为云 | HyperBDR云容灾上架,开启联营联运新篇章

日前,万博智云HyperBDR云容灾正式入驻华为云云商店,成为华为云基础软件领域联营联运合作伙伴。通过联营联运,双方将进一步加深在产品、解决方案、渠道拓展等多方面的强强联合,为企业提供更加安全、高效的数据保护解决方案&#xf…

力扣503. 下一个更大元素 II

Problem: 503. 下一个更大元素 II 文章目录 题目描述思路复杂度Code 题目描述 思路 由于此题是环形数组,我们在利用单调栈模板的基础上还需要将给定数组扩大一倍,但实际上我们只需要利用取余的操作模拟扩大数组即可(具体操作看代码。在解决有…

【简单介绍下容器是什么?】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

c++ (命名空间 字符串)

思维导图&#xff1a; 定义自己得命名空间myspace,在myspace中定义string类型变量s1,再定义一个函数完成字符串逆置 #include <iostream> #include <cstring> //定义自己得命名空间myspace,在myspace中定义string类型变量s1,再定义一个函数完成字符串逆置 using n…