事件分发机制 Android,熬夜整理 Android 面试笔试题,精心整理
经历
坐标湖南,双非一本毕业。毕业后跟发小一起到深圳找工作。发小国防科大软件工程毕业。几乎没有太多周折,轻松入职了中国平安。像我这种双非渣本,随便在深圳拉一个外卖小哥出来学历可能都比我高。 前期找工作的过程是比较痛苦的,两个星期后我终于找到了我的第一份 offer,一家刚起步的互联网小公司,Android 开发岗。公司很小,开发团队实际上就 4 个人。APP 从框架搭建到项目开发,版本发布更新后期运维,都是自己做。
之后就是各种跳槽,辗转过很多公司,积累了一些项目经验,走走停停都是些小公司。随着时间的推移,感觉自己的技术提升越来越慢,甚至停滞。我体会到了前辈们说的技术瓶颈是什么感受。
年初疫情爆发,我所在的小厂圈子几乎所有公司都在裁员。我也被公司劝退了。失业在家,跟发小诉说了我的坎坷经历。如今的他已经是平安的项目经理。他告诉了我一些技术趋势,学习的方向。并给了我几个内推机会。就这样开始了我的闭关修炼之路。下面是我的修炼秘籍。
二、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 的后台的作业,即使应用程序退出或设备重新启动也可以运行可延迟的异步任务。
Android 进阶资料
以下的资料是近年来,我和一些朋友面试收集整理了很多大厂的面试真题和资料,还有来自如阿里、小米、爱奇艺等一线大厂的大牛整理的架构进阶资料。在这里分享出来,希望可以帮助到大家。
点击下方链接可以直接领取哦。
Android 进阶核心笔记
百万年薪必刷面试题
最全 Android 进阶学习视频
评论