最近有听到很多小伙伴问“Android 开发还有前景吗?”。确实,现在的Android开发早已没有前几年那么火热了,初级开发者的市场已经严重饱和,但据我的几个HR朋友反应,高级工程师现在都是各家大厂在抢人了,往往都是高薪但招不到人。
这也对我们开发者提出了更高的要求,所以,努力让自己成为高级工程师才是最重要的,技术才是我们的核心竞争力!
谷歌在 2018 I/O 大会上发布了一系列辅助android开发者的实用工具,这套工具就是Jetpack,它是一套库的合集,可以帮助开发者更轻松地编写出色的 Android 应用程序。避免频繁的bug,做重复的工作。
并且,使用Jetpack对开发者来说还有以下几个优势:
- 加速开发: Jetpack 提供丰富的组件,组件可以单独采用,将拿来主义发挥到极致,但是又可以深度定制
- 消除样板代码: Jetpack 可管理繁琐的 Activity(如后台任务、导航和生命周期管理)。
- 构建高质量的强大应用: Jetpack 组件围绕现代化设计实践构建而成,具有向后兼容性,可以减少崩溃和内存泄漏。
大厂是如何使用Jetpack的?
Jetpack 现在包含的内容非常丰富,一般大厂中使用 MVVM 设计思想与Jetpack联合使用。同时 Jetpack 里面的架构相关的组件也是为MVVM 量身定制的。
用Jetpack与MVVM设计思想开发的项目不仅保护了项目的完整性,很难出现难以排查的内存泄漏,同时也解耦了各个模块。
就拿华为音乐来看他的架构:
设计思想 我们选用MVVM
工具我们使用Jetpack组件中的 Lifecycle、ViewModel、LiveData,Room
- ViewModel
ViewModel对象为音乐界面提供数据,并包含下载,播放音乐业务逻辑,以与View进行通信。例如,ViewModel 可以调用其他组件来加载数据,还可以转发用户请求来修改数据。ViewModel 不了解界面组件,因此不受配置更改(如在旋转设备时重新创建 Activity)的影响。
- LiveData
LiveData是一种可观察的数据存储器。华为音乐中的其他组件可以使用此存储器监控对象的更改, LiveData 组件监听应用音乐界面Activity的生命周期状态,并清理逻辑以防止对象泄漏和过多的内存消耗。当音乐界面关闭,会释放所有的需要释放的内存,以达到节省内存,和防止内存泄露的目的
- Room
Room 是一个对象映射库,可利用最少的样板代码实现本地数据持久性。在编译时,它会根据数据架构验证每个查询,这样损坏的 SQL 查询会导致编译时错误而不是运行时失败。Room 可以抽象化处理原始 SQL 表格和查询的一些底层实现细节。它还允许您观察对数据库数据(包括集合和连接查询)的更改,并使用 LiveData 对象公开这类更改。它甚至明确定义了解决一些常见线程问题(如访问主线程上的存储空间)的执行约束。
光这么看文字大家可能不太容易理解,也很难将Jetpack和MVVM应用到工作中去。