Jetpack中各个组件简介

Android-Jetpack架构组件(一)带你了解Android-Jetpack 网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。我搜集整理过这几年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含。网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。它提供一致且易于使用的界面,适用于大多数Android。 阅读详情


前言

Jetpack是当下最火的组件了,Google官方大力推荐,其好用,性能优异受到很多开发者的喜爱,接下来我们将简单了解一下Jetpack中各个组件,以后会发文章单独详细讲解


一、Lifecycle

lifecycle通过观察者模式监听生命周期

被观察者(lifecycleOwner):activity,Fragment声明周期变化getLifecycle().addObversever(自己的类)绑定观察者—>通知 dispatch(Event)—>观察者(lifecycleObserver):用户类,FrameWork层类,mObserverMap:存放了所有观察者—>反射拿到观察者的class对象—>mInfo:存放了所有带注解的方法@OnLifecycleEvent(Lifecycle.Event.ON_CREATE))—> mMethod.invoke(target,source)—>调用相应api,需要监听哪个声明周期则重写哪个方法就好

  • mState:从左往右,从右往左返回状态值
  • 监听生命周期需要实现lifecycleObserver接口

二、liveData

  • liveData是一个数据持有类

  • 能够感知组件的生命周期,确保仅更新活跃组件

  • 不会因Activity停止而导致崩溃,如果观察者的生命周期处于非活跃状态(如返回栈中的 Activity),则它不会接收任何 LiveData 事件

  • 持有的数据可被观察者观察,在底层数据更改时通知视图

  • 一对多观察者:观察者会绑定lifecycle对象,在生命周期结束时会自我清理(不会发生内存泄露)

  • 共享资源:可以使用单例模式扩展 LiveData 对象以封装系统服务,以便在应用中共享它们。

  • liveData使用:

    • MutableLiveData:LiveData(抽象类)的子类

    • liveData.postValue():可在任意线程下执行(切换线程操作)

    • liveData.setValue():只能在主线程中执行

    • liveData.observe():注册观察者

  • observe()源码:注册观察者保存在mObserves(map)中

    感知生命周期:owner.getLifecycle().addObserver(wapper),改变时调用onstatechanged()

    观察者有两种情况会被回调:

    1、postValue时会遍历观察者然后回调

    2、当组件生命周期发生变化或者第一次注册观察者时回调

  • 粘性事件:

    这里得满足两个条件会触发粘性事件
    1.数据发送早于注册监听
    2.监听者的owner生命周期进入活跃状态


三、ViewModel和DataBinding

  • viewModel:注重以生命周期的方式存储和管理界面相关数据,不受activity生命周期影响

    • 数据持久化:生命周期不受限制

    • 异步回调问题不会造成内存泄露

    • 隔离model层和view层:解耦

    • Fragment间共享数据

  • DataBinding:实现双向绑定,数据和UI同步

    作用:当数据源发生改变时,及时更新给UI(p层做的事情交给系统源码去做)


四、Navigation和Fragment

  • Navigation:导航(回退栈)

  • 三大件:

    • Navigation Graph:导航图,包含了所有导航相关信息的XML资源。一般防止在res/navigation目录下

    • NavHost:容器,用来显示Fragment的,即Activity中的fragment,要求实现NavHost

    • NavController:在NavHost中管理应用导航的对象

    一句话就是,通过NavController,获取当行图中的特定路径以及目标,导航到特定的目标放到NavHost中

    Navigation是用来管理Fragment的切换,并且可以通过可视化的方式,看见APP的交互流程。

  • 优势:

    1、可视化的页面导航图,可以编辑各个组件之间的跳转关系
    2、优雅的支持Fragment之间的转场动画
    3、通过第三方的插件(SafeArgs(Gradle插件))支持Fragment之间类型安全的参数传递
    4、通过NavigationUI类,对菜单,底部导航,抽屉菜单导航进行方便统一的管理
    5、支持通过deeplink直接定位到Fragment


五、Room数据库

  • 轻量级orm数据库(关系映射型),本质上sqlite抽象层,类似于Retrofit库,Room在开发阶段通过注解标记相关功能,编译时自动生成impl实现类

  • 数据库框架的两种实现思路:

    • 关系映射型(orm):根据类对象通过反射的手段获取到类名以及成员变量名作为表名和字段名

      缺点:无法确定类对象中有哪些成员不需要创建表字段

    • 注解+反射:每个业务模块完全独立,不浪费资源,要自定义注解和处理注解

  • Room三大件:

    1、Entity:实体类,对应的是数据库的一张表结构。需要使用注解 @Entity 标记。
    2、Dao:包含访问一系列访问数据库的方法。需要使用注解 @Dao 标记。
    3、Database:数据库持有者,作为与应用持久化相关数据的底层连接的主要接入点。需要使用注解 @Database 标记。
    使用@Database注解需满足以下条件:
    1)定义的类必须是一个继承于RoomDatabase的抽象类。
    2)在注解中需要定义与数据库相关联的实体类列表。
    3)包含一个没有参数的抽象方法并且返回一个带有注解的 @Dao。


六、workManager

  • workManager:可延迟运行,并在应用退出或重启时能可靠运行任务

    应用场景:埋点上传,非即时性上传与下载,同步数据和处理数据

  • 三大件:

    1、Worker:我们要执行的具体任务。需要继承Worker,重写doWork方法,然后在里面写具体的逻辑。
    2、WorkRequest:上面的Worker是定义了我们要在后台的任务,而这个类是对Worker的包装。
    下面两个都是继承了WorkRequest:
    OneTimeWorkRequest: 只执行一次的任务
    PeriodicWorkRequest: 重复执行的任务(重复间隔大于15分钟)
    3、WorkManager:是对WorkRequest的管理类。


七、pager

  • pager:分页加载

  • 三大件:

    • DataSource:数据源,获取数据

    • pagedList:承载数据,可理解为一页数据的集合

    • pagedListAdapter:对RecyclerViewAdapter的一个扩展

Jetpack的DataStore数据存储组件的使用简介 Jetpack的DataStore数据存储组件的使用简介 介绍 Jetpack DataStore是一种数据存储解决方案,可让您使用Protocol Buffer(协议缓冲区)存储键值对或类型化对象。DataStore使用Kotlin协程和Flow异步,一致的事务方式来存储数据。 注意: 如果需要支持大型或复杂的数据集,部分更新或参考完整性,请考虑使用 Room 而不是DataStore。DataStore非常适合小型,简单的数据集,并且不支持部分更新或参照完整性。 目的 Jetpack DataSto 阅读详情

相关推荐

2025最新Android面试必备基础,Jetpack解析深入浅出

Jetpack组件是Android开发中的重要工具集,包含ViewModel、LiveData、Room等模块,帮助开发者高效构建应用。本文详细解析每个组件的功能、使用场景及代码实例,助你快速掌握Jetpack组件的核心能力。

开发者专栏 981

还不知道Android Jetpack是什么?你就out了

本文首发于微信公众号「Android开发之旅」,欢迎关注 ,获取更多技术干货 简介 谷歌在 2018​ I/O 大会上发布了一系列辅助android开发者的实用工具,这套工具就是Jetpack,它是一套库、工具和指南的合集,可以帮助开发者更轻松地编写和构建出色的 Android 应用程序。 Jetpack中的有些组件并不是第一次推出,其中LifeCycle、LiveData、ViewModel...

Android开发之旅 1845

Android Jetpack:提高开发效率的终极工具集

Android Jetpack是一套为Android应用程序开发提供帮助的工具集。它旨在简化开发流程,提高开发效率,并提供一致的用户体验。无论您是新手还是经验丰富的开发者,Jetpack都可以为您提供强大的功能和灵活性。Android Jetpack由多个组件组成,涵盖了各种不同的方面,包括基础组件、架构组件和行为组件。这些组件是为Android开发而设计的,可用于从简单的小应用到复杂的大型应用。Jetpack的核心原则之一是向后兼容性,因此它可以与不同版本的Android操作系统一起使用。

虎哥LoveDroid 1265

Jetpack架构组件库

Jetpack是众多优秀组件的集合。是谷歌推出的一套引领Android开发者逐渐统一开发规范的架构。

wang_yong_hui_1234的博客 7354

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 928

Neo4j Desktop新手必看:3分钟搞定CSV数据导入(附常见报错解决方案)

本文详细介绍了在Neo4j Desktop中高效导入CSV数据的三种主流方法,包括图形化界面操作、命令行批量导入和Python驱动编程导入,并提供了常见报错解决方案和性能优化技巧,帮助新手快速构建知识图谱。

lambda的博客 648

Jetpack组件(一)Jetpack组件简介

Jetpack是什么?相信做Android开发的同学都或多或少地听过或用过Jetpack,即使你认为自己没用过,但实际上你可能 已经不知不觉中用过了。因为Jetpack组件库非常庞大,它包含了很多的优秀组件。本篇不去详细展开介绍Jetpack组件库的某个或某些组件,只做一个简介,后续准备用一系列的文章来详细介绍Jetpack组件库的常用组件。

zhaojun的博客 2023

利用OTSU阈值算法在ZYNQ上实现浒苔识别

利用OTSU阈值算法进行图像二值化,结果用HDMI显示

qq_38075564的博客 1275

Android Jetpack架构组件简介

Android Jetpack架构组件简介

QG 626

colmap+openMVS稠密重建

简要记录一下colmap+openMVS稠密重建相关使用。

weixin_41631106的博客 2242

openEuler 22.03 LTS SP4离线安装UKUI桌面全攻略(附依赖包下载)

本文提供openEuler 22.03 LTS SP4系统离线安装UKUI桌面环境的完整实战指南。针对无网络环境,详细解析了利用dnf工具下载依赖包、配置离线软件源、处理依赖冲突及安装后优化的全流程,并附带了关键依赖包资源,帮助运维人员高效完成图形化部署。

c7d8e9的博客 479

Jetpack架构组件 (一)-- Android Jetpack 简介

前言 Android 已经发展十多年了,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库操作,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如XUtils、Volley、OKHttp、EventBus等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了 MVP 和 MVVM相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O

lixiong0713的博客 2万+

ChromeOS安装教程

ChromeOS,是基于Linux内核研发的ChromiumOS开源系统的闭源系统,最大的特色就是内置了Chrome浏览器,早期主要以Web云端应用程序为主,后来逐渐引入了Android子系统和Linux子系统。本文主要简述摸索的家用笔记本安装ChromeOS安装方法,供各位玩机朋友参考。

weixin_45751495的博客 8111

Android Jetpack组件简介

Android Jetpack 是一套用于构建 Android 应用程序的组件、工具和指南的集合,旨在简化开发流程、提高应用质量,并让开发者能够更快地发布应用。Jetpack 组件经过精心设计,可以解决常见的开发问题,减少样板代码,并帮助开发者遵循最佳实践。

micro9981的专栏 800

全面解读AI Infra:架构、生态与未来趋势

文章摘要 大模型时代下,AI基础设施(AI Infra)成为关键技术基建,涵盖从数据准备到模型服务的全栈技术体系。文章系统解构了AI Infra的四层架构(硬件资源层、资源管理调度层、开发框架层、平台工具层),并分析了全球AI Infra生态图谱,包括云计算巨头、芯片厂商等全栈服务商,以及中国特色的多元竞合格局。通过对比Data Infra与AI Infra的核心差异,指出AI Infra更关注智能应用的规模化与自动化。文章还探讨了从传统数据设施向AI基础设施的转型路径,强调自主可控、软硬协同等发展趋势,为

技术引领业务创新 610

Python爬虫实战:采集菜谱网站数据——以“下厨房”为例

随着互联网的发展,海量优质数据为各类应用提供了坚实基础。菜谱作为用户日常生活中需求极高的内容,丰富多样的菜谱数据不仅方便用户烹饪,也为美食推荐、营养分析等研究提供了数据支持。本文将围绕国内知名菜谱网站“下厨房”(https://www.xiachufang.com)展开,结合最新Python爬虫技术,详细讲解如何高效、规范地采集菜谱数据,包括菜谱名称、食材、步骤、评分、评论等丰富信息。全篇覆盖爬虫原理、框架选型、反爬应对、数据存储和简单分析,是学习爬虫实战的绝佳案例。菜谱标题作者信息菜谱图片。

2201_76125261的博客 1897

Android Jetpack架构组件的使用简介

Jetpack的介绍 Jetpack 是一个由多个库组成的套件,可帮助开发者遵循最佳做法,减少样板代码并编写可在各种 Android 版本和设备中一致运行的代码,让开发者精力集中编写重要的代码。 Jetpack的优点 加速开发:组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用 Kotlin 语言功能帮助您提高工作效率。 消除样板代码:Android Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理),以便您可以专注于如何让自己的应用出类拔萃。 构建高质

weixin_42324979的博客 947

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Jetpack架构组件_ViewModel组件_1.简介和示例

Android为什么要引入ViewModel?(1)分层,便于测试和维护;(2)ViewModel解决了横竖切换时数据丢失的问题。ViewModel生命周期比较长一些,不受横竖屏切换Activity生命周期的影响。(3)避免因疏忽而导致的内存泄露。onCleared里,写一些释放资源的代码。

huaqianzkh的专栏 1243

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Android Jetpack 的 Navigation导航组件的使用简介

Android Jetpack 的 Navigation导航组件的使用简介 介绍 Android Jetpack 的 Navigation(导航组件) 可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一套既定原则来确保一致且可预测的用户体验。 导航组件由以下三个关键部分组成: 导航图: 在一个集中位置包含所有导航相关信息的 XML 资源。这包括应用内所有单个内容区域(称为目标)以及用户可以通过应用获取的可能路径。 NavHost:

weixin_42324979的博客 870

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JetPack实战(1)架构组件简介

官网:https://developer.android.google.cn/jetpack/ 包含以下8大架构组件: 其中databinding,Lifecycles,LiveData,ViewModel,Room,5个最为常用,优先介绍 8大组件: 数据绑定(databinding) 以声明方式将可观察数据绑定到界面元素 Lifecycles 管理您的 Activity 和 Fragment 生命周期 LiveData 在底层数据库更改时通知视图 ...

u010963053的博客 327

【安卓开发系列 -- APP】JetPack -- 组件库简介

【安卓开发系列 -- APP】JetPack -- 组件库简介 【1】JetPack 概念 Jetpack 与 AndroidX Jetpack 是众多组件库的统称,AndroidX 是这些组件的统一包名Jetpack 的优势 Jetpack 拥有基于生命周期感知的能力,可以减少 NPE(空指针异常) 崩溃、内存泄漏,为开发出健壮且流畅的程序提供强力保障; Jetpack 可以消除大量重复样板式的代码,可以加速 Android 的开发进程,组件可搭配工作,也可单独使用,同时配合 Kotlin 语言特性能

CopperSun 技术博客 1586

Android Jetpack架构组件实战

Android Jetpack是一套由Android官方推出的库和工具,旨在帮助开发者更快、更轻松地构建高质量的应用。它包括多个架构组件,如Lifecycle、LiveData、ViewModel等,这些组件旨在解决Android开发中的常见问题,提高开发效率。本文详细介绍了Android Jetpack架构组件的实战应用,包括Lifecycle、LiveData、ViewModel和Repository等组件。通过使用这些组件,开发者可以构建高质量、高效的应用。

2501_92486623的博客 1021

Android JetPack 简介及 Work Manager 和 Navigation 组件详述 | Google 开发者大会

在 Android 诞生的第十个年头,Android 手机应用的开发应该变得更加快捷。Google 也一直在聆听开发者的心声,尽力的提高开发者在开发 Android 应用的效率。在去年,我们听到开发者说,Android 开发的生命周期管理很困难,所以我们推出了 lifecycle 组件。我们还听到,当你对后台任务进行处理的时候,API 给你了5-6种不同的解决方法,那么哪一种才是你最该使用的...

weixin_34010566的博客 201

Android Jetpack从入门到精通,干货满满

1.1 简介1.2 特性1.3 分类1.4 应用架构11.1 Hilt - Jetpack 推荐的依赖注入类库11.2 Paging3 - 逐步加载和显示数据11.3 App Startup - 在应用启动时初始化组件11.5 更简单的动画 — core-animation 和 SeekableAnimatedVectorDrawable。

2501_90228933的博客 1383

阿里5次面试碰壁,100天深造-Jetpack架构组件从入门到精通,险获腾讯年薪45w+offer!

1. 什么是Jetpack 1.1 简介 Jetpack是一套库、工具和指南,可以帮助开发者更轻松地编写优质应用。这些组件可以帮助开发者遵循最佳做法、 让开发者摆脱编写样板代码的工作并简化复杂任务,以便开发者将精力集中放在所需的代码上。 1.2 特性 加速开发 组件可以单独采用(不过这些组件是为协同工作而构建的),同时利用Kotlin语言功能帮助开发者提高工 作效率。 消除样板代码 Android Jetpack可管理繁琐的Activity(如后台任务、导航和生命周期管理),以便开发者可以专注 于如何让

Android725的博客 527
上一篇: kotlin语法总结(二)
下一篇: svg图片实战:自定义view打造中国地图
浮空over
博客等级 码龄7年 6粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值