引言 2018年,Google 官方推出一个 全新的开发组件工具库 Jetpack ,并将2017年所推出的一个 架构组件库 Architecture Components 作为 Jetpack 的一部分纳入其中 ;当然,Jetpack 并没有就此 定板 ,此后的几年里又有 许多新的组件被加入到 Jetpack 中, 未来 Jetpack 一定还会不断继续扩充 我们看下Google 官方的定义 Jetpack 是一个由多个库组成的套件 ,可帮助开发者 遵循最佳做法、减少样板代码 并 编写 可在 各种 Android 版本和设备中一致运行的代码 ,让开发者可将精力集中于真正重要的编码工作 根据官方的定义其实能够提炼出 两个核心点 1、它是 一套组件库 (说明它是由 许多个不一样的组件库构 成,并非一个 单一 的组件库) 2、使用 Jetpack 能够帮助咱们在 不一样的 Android 版本和不一样的设备上,实现行为一致的工作代码 ;(说明 Jetpack 能够轻松的处理由 Android 版本不一致和设备不一样产生的差别性和兼容性问题 ) 接下来我们看下 Jetpack 的构成 我们可以从上述的这张 Android Jetpack 的架构图 上看到, Android Jetpack 的构成是十分庞大的 ,主要是由 Architecture(架构组件) 、Foundationy(基础组件)、Behavior(行为组件、UI(界面组件)四大部分组成 不难发现,这 Android Jetpack 系列库 里面是有不少我们 曾经学习过 的东西,例如: Fragment、WebView、Room 都 归属于 Jetpack 中 来了,由此可见, Jetpack 并不全是些新的事物 ,只要是能够 帮助开发者更好更方便 的 构建应用程序的组件 ,基本上都被 加入到了 Jetpack 中来 Jetpack 的优点有哪些 ? 就像上述说的一样; Jetpack 是一个开发组件工具集 ,它的主要 目的 肯定是让 开发者 能够编写出 更加简洁的代码 ,并 简化 我们的 开发过程 ,这也就意味着 Jetpack 必将具有以下几个优点 遵循最佳做法 Android Jetpack 库采用最新的设计方法构建,具有向后兼容性,可以减少崩溃和内存泄漏 无需捆绑 Android Jetpack 系列组件可以无需捆绑使用,你如果只想用里面的单个库,那么就可以仅仅依赖一个库 消除样板代码 Android Jetpack 可以管理各种繁琐的活动(如后台任务、导航和生命周期管理),以便您可以专注于打造出色的应用 减少不一致 这些库可在各种 Android 版本和设备中以一致的方式运转,助你降低复杂性 Android Jetpack 要学吗? 在我看来谷歌提出这一系列的组件是想引领 Android 开发者逐渐统一开发规范,把现在好的一系列第三方吸纳进来;在原来感觉 Android 开发一直是放任自流的状态,到现在每次的 Android 版本更新都能体会的出来;谷歌在一步步的引领着开发者们往统一的方向标准发展 作为 Android 开发者,无论我们是否使用 Jetpack,就 Jetpack 本身而言,其精妙的设计以及设计思想都是非常值得我们学习的 如何学习 Jetpack ? 上述是 腾讯 T10 级 大佬面向学习 Jetpack 所制作的一张 思维导图, 希望可以给大家提供一个 好的学习方向 ; 并且通过这份思维导图融合了这些年的工作经历及对网上的资料查询和整理,最终将其整合成了一份 Jetpack 全家桶高级开发学习笔记; 有需要这份 Jetpack 全家桶高级开发学习笔记 的朋友:现在 私信 发送 "笔记" 即可 免费获取 ; 希望大家通过阅读这份笔记,能够查漏补缺 ;早日 精通 Jetpack 资料内容展示如下: Jetpack 全家桶目录 Jetpack 全家桶系列之 Lifecycle万物基于 Lifecycle 手动管理生命周期的痛苦你不懂 按照惯例的思考 观察者模式 引入 Lifecycle 后 源码结构 简单的源码分析 activity 生命周期处理 fragment 生命周期处理 Lifecycle State 大小比较 完整版 Jetpack 全家桶高级开发学习笔记 获取方式:私信发送 "笔记"即可 免费获取Jetpack 全家桶系列之 ViewModelViewModel 的职责 作为数据持有者 Fragment 间共享数据 代替 Loader ViewModel 源码分析 如何做到 activity 重建后 ViewModel 仍然存在? 如何做到 fragment 重建后 ViewModel 仍然存在? 如何控制作用域? 如何避免内存泄漏? ViewModel 和 onSaveInstanceState Jetpack 全家桶系列之 ViewModel数据驱动魔法师 DataBinding 基础 DataBinding 引入 使用DataBinding 解决的问题及实现原理 Binding Adapter DadaBinding + LiveData 各种 findViewById 替代方案对比 完整版 Jetpack 全家桶高级开发学习笔记 获取方式:私信发送 "笔记"即可 免费获取Jetpack 全家桶系列之 NavigationNavigation 简介 Navigation 能做什么 Navigation 工作逻辑 Navigation Graph Navigation 的使用技巧 同一 graph 中共享 ViewModel 嵌套 navigation graph Navigation 设计探讨 fragment replace 你真的了解吗 被重建的 fragment Jetpack 全家桶系列之 LiveData我们都是 Adapter 理想的数据模型 observable lifecycle-aware data holder Transformations LiveData 的错误用法 错误地使用 var LiveData LiveData 粘性事件 源码结构 LiveData MutableLiveData Observer 源码分析 有需要这份 Jetpack 全家桶高级开发学习笔记 的朋友:现在 私信 发送 "笔记" 即可 免费获取 目前我也在学习 Jetpack,相信未来 Jetpack 会越来越好 加油!!!各位 Android 开发者们