当前位置: 首页 > news >正文

Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些

Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分,而不会受到Android平台特定的限制。Jetpack组件可分为四个类别:

  • 架构组件(Architecture Components)
  • UI组件(UI Components)
  • 行为组件(Behavior Components)
  • 基础组件(Foundation Components)

架构组件包括Room, LiveData, ViewModel和Data Binding。UI组件包括RecyclerView、Paging、Navigation等等。行为组件包括WorkManager和Notifications。基础组件包括AppCompat、Multidex、Test、安全等等。

jetpack常用组件

1. Room

Room 是一个 SQLite 对象映射库,让您能够在应用中使用数据库,同时充分利用 LiveData、ViewModel 和协程等现代化库。

@Entity
data class User(@PrimaryKey val uid: Int,@ColumnInfo(name = "first_name") val firstName: String?,@ColumnInfo(name = "last_name") val lastName: String?
)

2. LiveData

LiveData是一个生命周期感知的可观察数据存储器类,可帮助您构建响应式,健壮和可测试的界面。LiveData经常与ViewModel一起使用,使数据更新后可以自动更新UI。

val mutableLiveData = MutableLiveData("Hello World")
mutableLiveData.observe(this, Observer { s -> text_view.text = s })

3. ViewModel

ViewModel是一个专门为UI层开发的类,通过保存数据的方式,解决了UI层重建,数据丢失的问题。ViewModel可以确保当配置更改、活动终止并重新创建时,数据会立即恢复。

class MyViewModel : ViewModel() {private val users: MutableLiveData> by lazy {MutableLiveData>().also {loadUsers()}}fun getUsers(): LiveData> {return users}private fun loadUsers() {// Do an asynchronous operation to fetch users.}
}

4. Data Binding

数据绑定库(Data Binding Library)可以让您以声明方式将可观察对象绑定到界面元素。它的出现,让每一个具有一定业务逻辑的界面都可以得到简化,以减少代码的编写以及针对Eclipse, ADT 和 Android Studio 等不同工具,提供了最方便的开发环境的支持工具。

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 自动化测试 功能 ,
  • 提高 程序的 质量 , 提高代码的稳定性 ;

jetpack组件库

Jetpack还有一些组件库,比如Hilt, WorkManager, CameraX和Compose等等。

1. Hilt

Hilt是Android的依赖注入库,用于定义应用程序中的类之间的依赖关系。它简化了和Dagger2一样的依赖注入过程,并简化了注入实例的进程。

@InstallIn(SingletonComponent::class)
@Module
class MyModule {@Providesfun provideFoo(): Foo = Foo() 
}class Foo @Inject constructor()

2. WorkManager

WorkManager是一个API,它让您能够安排后台任务,即使应用已经退出或设备已经重启。有了WorkManager,您可以针对应用使用情况定义灵活且轻量化的任务,并确保在设备单独的线程上以可靠、一致的方式运行。

val uploadWorkRequest = OneTimeWorkRequestBuilder().build()
WorkManager.getInstance(context).enqueue(uploadWorkRequest)

3. CameraX

CameraX是一组相机API,可让您轻松访问设备的摄像头。它有着简单易用的API,便于开发者使用。CameraX 支持多种设备,版本兼容,可读性高。

val preview = Preview.Builder().build()
val analysisUseCase = ImageAnalysis.Builder().build()
val imageCapture = ImageCapture.Builder().setTargetRotation(previewView.display.rotation).build()

本文就主要讲解了,在Android Jetpack中的组件有哪些,常用的组件介绍,更多Android Jetpack的学习可以参考《Android Jetpack笔记》点击就可以查看详细的类目板块,也可以拿取。

結尾

到目前为止,Jetpack包含80多个库的组件。每个库都是专为 Android 开发而设计的,涵盖了各种开发过程中的各个方面。

相关文章:

Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些 Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分,而不会受到Android平台特定的限制。Jetpack组件可分为四个类别: 架构组件(Architecture Componen…...

ImportError: cannot import name ‘url_quote‘ from...

👨🏻‍💻 热爱摄影的程序员 👨🏻‍🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻‍🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…...

一文看分布式锁

为什么会存在分布式锁? 经典场景-扣库存,多人去同时购买一件商品,首先会查询判断是否有剩余,如果有进行购买并扣减库存,没有提示库存不足。假如现在仅存有一件商品,3人同时购买,三个线程同时执…...

Jenkins自动化部署一个Maven项目

Jenkins自动化部署 提示:本教程基于CentOS Linux 7系统下进行 Jenkins的安装 1. 下载安装jdk11 官网下载地址:https://www.oracle.com/cn/java/technologies/javase/jdk11-archive-downloads.html 本文档教程选择的是jdk-11.0.20_linux-x64_bin.tar.g…...

K8S1.23.5部署(此前1.17版本步骤囊括)及问题记录

应版本需求,升级容器版本为1.23.5 kubernetes组件 一个kubernetes集群主要由控制节点(master)与工作节点(node)组成,每个节点上需要安装不同的组件。 master控制节点:负责整个集群的管理。 …...

基于java web的中小型人力资源管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…...

Python学习笔记--Python关键字yield

原文:http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained 注:这是一篇 stackoverflow 上一个火爆帖子的译文 问题 Python 关键字 yield 的作用是什么?用来干什么的? 比如,我正在试图理解下面的代码: def node._get_child_candidates(self,…...

CF 850 C Arpa and a game with Mojtaba(爆搜优化SG)

CF 850 C. Arpa and a game with Mojtaba(爆搜优化SG) Problem - C - Codeforces Arpa and a game with Mojtaba - 洛谷 思路:显然对于每一种质因子来说操作都是独立的 , 因此可以考虑对于每一种质因子求当前质因子的SG &#…...

kafka分布式安装部署

1.集群规划 2.集群部署 官方下载地址:http://kafka.apache.org/downloads.html (1)上传并解压安装包 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf kafka_2.12-3.3.1.tgz -C ../software/(2)修改解压后的文件…...

[云原生2.] Kurbernetes资源管理 ---- (陈述式资源管理方式)

文章目录 1. K8s管理资源的方法类别1.1 陈述式资源管理方式1.2 声明式资源管理方式1.3 GUI式资源管理方法 2. 陈述式资源管理方式2.1 命令行工具 ---- Kubelet2.1.1 简介2.1.2 特性2.1.3 kubelet拓展命令2.1.4 kubectl基本语法2.1.5 Kubectl工具的自动补全 2.2 k8s Service 的类…...

java:IDEA中的Scratches and Consoles

背景 IntelliJ IDEA中的Scratches and Consoles是一种临时的文件编辑环境,用于写一些文本内容或者代码片段。 其中,Scratch files拥有完整的运行和debug功能,这些文件需要指定编程语言类型并且指定后缀。 举例:调接口 可以看到…...

华为 Mate 60 Pro 拆解:陆制零件比率上升至47% | 百能云芯

近日,日经新闻联合研究公司Fomalhaut Techno Solutions对华为 Mate 60 Pro 进行了拆解,揭示了这款于8月发布的新型智能手机的成本结构。拆解结果显示,该手机的国产零部件比例达到了47%,相较于三年前的 Mate 40 Pro,提高…...

ZBrush 2024(三维数字雕刻软件)

ZBrush是一款Mac数字雕刻软件,它具有以下功能: 雕刻工具:ZBrush的雕刻工具非常强大,可以让用户在3D模型上进行雕刻,就像使用传统雕塑工具一样。高精度模型创建:ZBrush可以创建高精度的3D模型,适…...

wpf devexpress 排序、分组、过滤数据

这个教程示范在GridControl如何排序数据,分组数据给一个行创建一个过滤。这个教程基于前一个教程。 排序数据 可以使用GridControl 排序数据。这个例子如下过滤数据对于Order Date 和 Customer Id 行: 1、对于Order Date 和 Customer Id 行指定Colum…...

使用Badboy录制生成 JMeter 脚本

JMeter是一款在国外非常流行和受欢迎的开源性能测试工具,像LoadRunner 一样,它也提供了一个利用本地Proxy Server(代理服务器)来录制生成测试脚本的功能,但是这个功能并不好用。所以在本文中介绍一个更为常用的方法——…...

V10 桌面版、服务器版系统加固

V10 桌面版、服务器版系统加固 一、 文档说明 本文档中涉及的加固方法主要包括:密码策略配置、防火墙规 则配置、禁用高风险服务等。 二、 V10 桌面版系统加固 2.1 密码策略配置 密码策略包括密码老化控制策略和密码复杂度策略。密码老化 控制策略需要配置/etc…...

mtgsig1.2简单分析

{"a1": "1.2", # 加密版本"a2": new Date().valueOf() - serverTimeDiff, # 加密过程中用到的时间戳. 这次服主变坏了, 时间戳需要减去一个 serverTimeDiff(见a3) ! "a3": "这是把xxx信息加密后提交给服务器, 服主…...

场景交互与场景漫游-osgGA库(5)

osgGA库 osgGA库是OSG的一个附加的工具库,它为用户提供各种事件处理及操作处理。通过osgGA库读者可以像控制Windows窗口一样来处理各种事件 osgGA的事件处理器主要由两大部分组成,即事件适配器和动作适配器。osgGA:GUIEventHandler类主要提供了窗口系统的…...

Leetcode -1

Leetcode Leetcode -521.最长特殊序列Leetcode - 541.反转字符串Ⅱ Leetcode -521.最长特殊序列 题目:给你两个字符串 a 和 b,请返回 这两个字符串中 最长的特殊序列的长度。如果不存在,则返回 - 1 。 「最长特殊序列」 定义如下&#xff1…...

系列四、JVM的内存结构【本地接口(Native Interface)】

一、组成 本地接口由本地方法栈(Native Method Stack)、本地方法接口(Native Interface)、本地方法库组成。 二、本地接口的作用 本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C程序,Jav…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...