Android App开发之Jetpack架构
Posted 涂程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android App开发之Jetpack架构相关的知识,希望对你有一定的参考价值。
还记得15年那个时候,好像android就是解析数据,列表展示,了解下四大组件生命周期,已经可以干活了,还记得当年一个View只要能滑动,就大呼自定义控件牛逼。
不过,近几年的变化颇大。
为了丰富大家日常开发的UI效果效果: Material Design进入大家的视野,后面陆陆续续涌现出一大批UI组件:DrawerLayout,AppbarLayout,CoordinateLayout,ToolBar,NestedScrollView,FlexBoxLayout等…
在UI组件日益完善的同时,也开始出现了RecyclerView、ConstraintLayout、MotionLayout等一些可以辅助大家写出更加符合性能要求的界面效果。
在UI控件日益满足需求的同时,系统的安全与稳定性、用户隐私也越来越被重视,所以每个版本都出现了一些大的适配工作,例如运行时权限,FileProvider适配,限制后台服务、广播,限制反射SDK 私有API,引导使用HTTPS,甚至去除SDCard访问权限等…
用一张图来表示大家的学习历程,就像:
在这些基础能力完善后, Google终于开始对架构下手了。
大家都知道后端一般的项目大多数都是MVC架构,而且大多数后端写出来的代码很自然就遵守了这个架构。
为什么呢?并不是说后端开发人员架构思想就比我们强很多, 而是后端的框架相对成熟,由框架引导架构的落地。比如现在Java后端非常火的Spring框架,他会引导你去做ioc,aop,分层,Controller、Service、Dao一应俱全,你只要按照框架的指引,写出来的基本都符合MVC了。
但是在Android上,由于很多业务非常简单,简单到只需要发个请求、解析结果就完事了,这种情况下,很难让去划分业务层、控制层等等,并且Android也有自己的特殊的平台特性,比如组件生命周期、页面重建与恢复等等。
所以需要一系列的套件来引导大家去遵守某一架构,并针对平台特性做一些特殊支持,提供组件生命周期的感知套件,帮助大家更好的完成界面重建恢复等工作,以便于更好的管理大家的代码。
因此,Jetpack来了!
Jetpack是什么?
Jetpack是Google推出的一套系列组件集。
Jetpack的出现以及Google标准化开发模式的确立,代表了Android原生开发的未来方向,意味着Android发展已经逐渐成熟。
为什么要学?
在开发世界,永远是技术至上,一门新技术的盛行总是有原因的,要么比老框架性能提升不少,要不更加易用等等。作为开发者,更是要不断学习、尝试各种新出来的技术。
遇到新技术也不主动去学习,一边感慨着程序员薪资提升慢,35岁无路可去,一边上班摸鱼嘻嘻哈哈。对不起,程序员涨薪不是熬年龄,无处可去更不是因为年龄,而是不思上进。
网易员工能力强但因生病被辞退,全国人民都站出来为他发声;
但是,之前那位腾讯被辞退的员工,无辜缺勤旷工,每天上班时间不足八小时,真的冤吗?
Google推出的Jetpack如何应用到工作中来呢?
可以极大提高工作效率还是有深坑呢?
实际上很多移动端开发者听都没听过。
从工作到现在,经历过了MVC、MVP、MVVM、Clean等,每个项目由于项目特点和需求的不同,都会出现一套基于开发者所设计的架构模式,分层、组件化、模块化,每一种设计都是基于项目所在场景的,很难适合所有项目场景。
APP自身在飞速发展,版本不断迭代,新功能不断增加,业务模块数量不断增加,业务上的处理逻辑越变越复杂,同时每个模块代码也变得越来越多,这就引发一个问题,所维护的代码成本越来越高,稍微一改动可能就牵一发而动全身,改个小的功能点就需要回归整个APP测试,对开发和维护会带来很大的挑战。
外行看热闹,内行看门道。
我们到底该怎样优雅地开发App呢?
模块化、层次化、控件化、组件化怎么应用到实践当中?
Artifactory对模块化和组件化大有帮助;
Jetpack可以有效减少OOM和No Pointer Exception;
Mvvm则可以满足需求的变化。
也许单个的技术点你了解过,我们又该怎样将Artifactory、最新的Jetpack和Mvvm结合呢?
另外,如何在搭建app架构的同时,进行App启动速度的性能优化呢?
我之前详细研究过Jetpack,其中组件设计之妙,可以极大方便开发者的日常工作,可以更好的解决Android开发中的各种问题,尤其是对代码的数据逻辑和UI界面深层解耦,实现数据驱动型的ui。
许多重复性的代码,可以通过模版工具自动生成,提高效率的同时,还可以避免人工失误,大大降低bug数量。
在面试的时候,Jetpack也是面试官十分青睐的内容。
- Lifecycle、LiveData、ViewModel、DataBinding各有功效,你都知道多少?
- 我们该如何学习Jetpack系列组件库?
- 如何使用Lifecycle、LiveData解决项目中的问题?
- 你知道DataBinding的高级用法吗?
考虑到篇幅原因,我就不继续往下讲了,有需要的朋友们可以拿到《Android开发核心知识点笔记》研读
还有个小小的读者福利:
在这里我分享自己收录整理的Android学习PDF,里面对Jetpack有详细的讲解,希望可以帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,可以分享给身边好友一起学习
如果你有需要的话,可以顺手点赞+评论,关注一波后点击GitHub地址获取:https://github.com/733gh/Android-T3
以上是关于Android App开发之Jetpack架构的主要内容,如果未能解决你的问题,请参考以下文章
Android Jetpack架构组件(入门教程及进阶实战)独家首发