写点什么

事件分发机制 Android,熬夜整理 Android 面试笔试题,精心整理

发布于: 2021 年 04 月 22 日

经历

坐标湖南,双非一本毕业。毕业后跟发小一起到深圳找工作。发小国防科大软件工程毕业。几乎没有太多周折,轻松入职了中国平安。像我这种双非渣本,随便在深圳拉一个外卖小哥出来学历可能都比我高。 前期找工作的过程是比较痛苦的,两个星期后我终于找到了我的第一份 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学习PDF+架构视频+面试文档+源码笔记


Android 进阶核心笔记



百万年薪必刷面试题



最全 Android 进阶学习视频



用户头像

VX公众号:编程进阶路 2020.11.28 加入

还未添加个人简介

评论

发布
暂无评论
事件分发机制Android,熬夜整理Android面试笔试题,精心整理