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架构组件(入门教程及进阶实战)独家首发

Android 开发之Jetpack 架构知识点详解!!!

了解Android架构组件后,构建APP超简单

Jetpack—LiveData组件的缺陷以及应对策略

Android Jetpack架构组件从入门到精通,一文通解!

Android Jetpack架构组件带你了解Android Jetpack