还记得我刚接触Android的时候,好像Android就是解析数据,列表展示,了解下四大组件生命周期,已经可以干活了,还记得当年一个View只要能滑动,就大呼自定义控件牛逼!
不过,近几年的变化颇大。
为了丰富大家日常开发的UI效果效果: Material Design进入大家的视野,后面陆陆续续涌现出一大批UI组件:DrawerLayout,AppbarLayout,CoordinateLayout,ToolBar,NestedScrollView,FlexBoxLayout等...

在UI组件日益完善的同时,也开始出现了RecyclerView、ConstraintLayout、MotionLayout等一些可以辅助大家写出更加符合性能要求的界面效果。
在UI控件日益满足需求的同时,系统的安全与稳定性、用户隐私也越来越被重视,所以每个版本都出现了一些大的适配工作,例如运行时权限,FileProvider适配,限制后台服务、广播,限制反射SDK 私有API,引导使用HTTPS,甚至去除SDCard访问权限等...
在这些基础能力完善后, Google终于开始对基础、架构、行为、UI 等下手了。
大家都知道后端一般的项目大多数都是MVC架构,而且大多数后端写出来的代码很自然就遵守了这个架构。
为什么呢?并不是说后端开发人员架构思想就比我们强很多, 而是后端的框架相对成熟,由框架引导架构的落地。比如现在Java后端非常火的Spring框架,他会引导你去做ioc,aop,分层,Controller、Service、Dao一应俱全,你只要按照框架的指引,写出来的基本都符合MVC了。
但是在Android上,由于很多业务非常简单,简单到只需要发个请求、解析结果就完事了,这种情况下,很难让去划分业务层、控制层等等,并且Android也有自己的特殊的平台特性,比如组件生命周期、页面重建与恢复等等。
所以需要一系列的套件来引导大家去遵守某一架构,并针对平台特性做一些特殊支持,提供组件生命周期的感知套件,帮助大家更好的完成界面重建恢复等工作,以便于更好的管理大家的代码。
因此,Jetpack来了!
Jetpack是什么?
Jetpack是Google推出的一套系列组件集。
Jetpack的出现以及Google标准化开发模式的确立,代表了Android原生开发的未来方向,意味着Android发展已经逐渐成熟。

为什么要学?
我之前详细研究过Jetpack,其中组件设计之妙,可以极大方便开发者的日常工作,可以更好的解决Android开发中的各种问题,尤其是对代码的数据逻辑和UI界面深层解耦,实现数据驱动型的ui。
许多重复性的代码,可以通过模版工具自动生成,提高效率的同时,还可以避免人工失误,大大降低bug数量。
在面试的时候,Jetpack也是面试官十分青睐的内容。
Lifecycle、LiveData、ViewModel、DataBinding各有功效,你都知道多少?欢迎大家在评论区讨论!
最后
下面是有几位Android行业大佬整理有我收录的一些进阶架构资料。有Android架构视频+BATJ面试专题PDF+学习笔记等资料。希望能够帮助到大家提升技术。如果大家想要获取的话,可以私信我【666】免费获取哦~ 或者直点击查看详情
喜欢本文的话,不妨顺手给我点个小赞、评论区留言或者转发支持一下呗~



|