前段时间,我的老同学找到我 ;说近段时间准备招聘一些高级 Android 工程师 ;需要准备一些技术方面的面试题,主要是在面试的最后阶段,对其进行询问一下对 Jetpack 的理解,也是 考察面试者对当前 Android 前沿开发技术的掌握程度及其是否对新兴技术有着持续学习的能力
其实 Jetpack 对大多数的 Android 开发者来言 ,可以称得上是一个 熟悉又陌生的东西;基本上处于它认识你,但是你不一定认识它的一个状态
有人说 Jetpack 就是 ViewModel、LiveData 这些东西,也有人说 Jetpack 其实就是一套 MVVM 框架集合 ;当然更多的人对 Jetpack s的理解却是处于听过、但没看过也没用过的一个阶段,所以也就导致了 许多人说不出 Jetpack 到底是个什么东西
所以今天我就给大家剖析一下 Jetpack 到底是什么?也方便大家如若在今后的面试中遇到相关问题的时候不会处于一个一问三不知的境地
首先我们来了解一下 Jetpack 在官方中的定义:Jetpack 是一个声明式的 UI 框架,可帮助开发人员遵循最佳实践,减少样板代码并编写可在 Android 版本和设备上一致工作的代码,以便开发人员可以专注于他们的代码
何谓声明式 UI 框架: 实则就是说 Jetpack 可以通过简单描述 UI 的外观,在其状态变化之时;界面会按照先前所描述的重新 “渲染” 即可 让其的得到状态绝对正确的界面
Android Jetpack 能为我们做什么?其实我觉得这个问题可以简化为Android Jetpack组件的作用是什么?
- Navigation:一个用于管理
Fragment
切换的工具类,可视化、可绑定控件、支持动画等是其优点 - Data Binding:不用说,都知道,加速
MVVM
的创建 - Lifecycle:虽然我没有写文章介绍,但是不代表它的作用不够强大,他是我们能够处理
Activity
和Fragment
的生命周期的重要原因,在AndroidX
的Fragment
和Activity
已经对Lifecycle
提供了默认支持 - ViewModel:当做
MVVM
的ViewModel层
,并具有声明周期意识的处理和UI相关的数据 - LiveData:同
RxJava
的作用一样,对数据进行监听,优点就是无需处理生命周期、无内存泄漏等 - Room:强大的ORM数据库框架
- Paging:易于使用的数据分页库,支持
RecyclerView
- WorkManager:灵活、简单、延迟和保证执行的后台任务处理库
学,肯定要学, Android Jetpack
于谷歌而言,这是他们重新整理和统一安卓生态环境决心的体现,Android Jetpack
所展现的内容,也是谷歌想拓展和维护的方向; 于长期苦恼于第三方库选择的广大Android开发者而言,这是谷歌为我们提供的 一盏明灯
也许,Android Jetpack
系列的部分库还没成熟到成为你工作的第一选择,但是,深入学习Android Jetpack
组件会为你提供与谷歌大佬深入交流的机会,为你日常的开发带来一些想法
总的来说,Jetpack 的推广对广大开发者而言是利远远大于弊的
那我们应该如何去学习 Android Jetpack ?关于 Jetpack 的文档资料 在网上其实有很多,但大多 杂而不精,并不能给提供一个好的学习方向;所以为了让大家对 Android Jetpack 有充分的了解, 我通过这些年的工作经历和对网上的资料查询和整理,最终将其整合了成了一个PDF文档; 需要 完整版PDF文档 的朋友:现在私信发送 “面试” 即可 获取;希望大家通过阅读这份文档,能够查漏补缺
1.Android Jetpack简介
2.Android Jetpack分类
- 2.1 Architecture(架构组件)
- 2.2 Foundationy(基础组件)
- 2.3 Behavior(行为组件)
- 2.4 UI(界面组件)
3.在应用中引入Jetpack相关组件
1.为什么需要Lifecycle
2.如何使用Lifecycle
- 2.1 依赖Lifecycle库
- 2.2 Lifecycle基本用法
3.Lifecycle应用举例
- 3.1 Activity中使用
- 3.2 MVP中使用
4.自定义LifecycleOwner
1.LiveData概述
- 1.1 LiveData优势
- 1.2 共享资源
2.LiveData使用
- 2.1 LiveData基本使用
- 2.2 Transformations.map()
- 2.3 Transformations.switchMap()
- 2.4 MediatorLiveData.addSource()合并数据
作为 Android 开发者,无论我们是否使用 Jetpack,就 Jetpack 本身而言,其精妙的设计以及设计思想都是非常值得我们学习的
以上是我的一点见解,目前我也在学习 Jetpack,相信未来 Jetpack 会越来越好