12 道 Android 高级面试题:android 开发视频百度网盘
二、JetPack 里的组件

上图就是 JetPack 中包含的组件列表,每个组件都是相对独立的,可以被单独使用和构建。其中像被介绍的最多,也是最常被使用的 LiveData, ViewModel, Room, Navigation, WorkManager 之类的都发布了正式版,而 CameraX, Compose 之类的还处在 Alpha 版本,未正式发布,官方并不建议在生产环境中使用。
然后说下,JetPack 所有的组件都是基于 AndroidX 构建的,如果想在项目中使用 JetPack 需要先将项目中对 Support Lib 的依赖全部换成 AndroidX。
Android 目前已经发展了 11 年,可以说是比较成熟的技术了,一开始时框架很少,也没有什么规范,所有的代码都是要自己写,比如网络请求,数据库请求,数据解析等等。后来出现了一些框架来帮助开发者快速进行开发,比如 XUtils、Volley、OKHttp、EventBus 等,随着框架越来越多,一个应用可以有多种技术选型,直接导致应用开发越来越不规范,导致做出来的应用质量参差不齐,这显然不是谷歌想看到的。谷歌随后推出了 MVP 和 MVVM 相关的官方例子,效果很一般,而且覆盖面只是在架构上,Goole I/O 2018 大会上推出的 Android Jetpack 有望解决以上的问题。
三、Android Jetpack 简介
Jetpack 并不是一个框架或者组件,它是一套库、工具和指南的集合,可帮助开发者更轻松地编写优质应用。这些组件可帮助开发者遵循最佳做法、摆脱编写样板代码的工作并简化复杂任务,以便将精力集中放在所需的代码上。Android Jetpack 中的很多组件并不都是新开发的,而是很早就有了,比如在 Goole I/O 2017 大会时推出了 Android Architecture Component(AAC),它包括了 LifeCycle、LiveData、ViewModel、Room。在 Goole I/O 2018 大会上,用 AndroidX 替代了 Android Support Library,并在 Android Architecture Component 的基础上发布了 Android Jetpack,AndroidX 也是属于 Android Jetpack。
Jetpack 主要特性有以下三点:
1.加速开发组件可单独使用,也可以协同工作,当使用 kotlin 语言特性时,可以提高效率。
2.消除样板代码 Android Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理)。
3.构建高质量的强大应用 Android Jetpack 组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。
四、Android Jetpack 分类
下图是 Jetpack 的分类。

谷歌仍旧不断的完善 Android Jetpack,截至到 2019 年 8 月已经有很多新加的组件并没有显示在上图中,比如 CameraX 等。Android Jetpack 分类有 4 种,分别是 Architecture、Foundationy、Behavior、UI,下面分别介绍下。
1. Architecture(架构组件)
Architecture 指的是架构组件,帮助开发者设计稳健、可测试且易维护的应用。架构组件可以说是对应用开发帮助最大的组件,本系列也是围绕着架构组件进行讲解。
DataBinding:以声明方式将可观察数据绑定到界面元素,通常和 ViewModel 配合使用。
Lifecycle:用于管理 Activity 和 Fragment 的生命周期,可帮助开发者生成更易于维护的轻量级代码。
LiveData: 在底层数据库更改时通知视图。它是一个可观察的数据持有者,与常规 observable 不同,LiveData 是生命周期感知的。Navigation:处理应用内导航。
Paging:可以帮助开发者一次加载和显示小块数据,按需加载部分数据可减少网络带宽和系统资源的使用。
Room:友好、流畅的访问 SQLite 数据库。它在 SQLite 的基础上提供了一个抽象层,允许更强大的数据库访问。
ViewModel: 以生命周期的方式管理界面相关的数据,通常和 DataBinding 配合使用,为开发者实现 MVVM 架构提供了强有力的支持。
WorkManager: 管理 Android 的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。
文末
当你打算跳槽的时候,应该把“跳槽成功后,我能学到什么东西?对我的未来发展有什么好处”放在第一位。这些东西才是真正引导你的关键。在跳槽之前尽量“物尽其用”,把手头上的工作做好,最好是完成了某个项目或是得到提升之后再走。跳槽不是目的,而是为了达到最终职业目标的手段
最后祝大家工作升职加薪,面试拿到心仪 Offer


评论