互联网寒冬即将过去,Jetpack将是燃起来的第一把火

Posted 懂你的大海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了互联网寒冬即将过去,Jetpack将是燃起来的第一把火相关的知识,希望对你有一定的参考价值。

前言

对于大多数 android 开发工程师来说,Jetpack 一定是一个既熟悉又陌生的东西。

在几个月前,有位朋友找到我,希望让我帮他们公司目前正在招聘的高级 Android 工程师岗位做一些技术面试。

通常在面试的最后阶段,我会问一下他们对 Jetpack 的理解,旨在考察他们对目前 Android 主流开发技术的掌握程度以及是否还保持着对新技术持续学习的能力。

有人回答 Jetpack 就是 LiveData、ViewModel 这些东西,有人回答 Jetpack 是一套 MVVM 框架,当然更多人的回答是,听过、但没用过,所以也说不出它到底是什么。

下面我就从三个方面来说说Jetpack

  • Jetpack是什么?
  • 为什么要学习Jetpack?
  • 怎样学习?

Jetpack是什么?

在 Jetpack 的官方文档中是这样对它定义的:

Jetpack 是一套组件库,可帮助开发人员遵循最佳实践,减少样板代码并编写可在 Android 版本和设备上一致工作的代码,以便开发人员可以专注于他们关心的代码。
根据定义其实可以提炼出两个核心点:

  1. 它是一套组件库。(说明它是由许多个不同的组件库构成,并不是一个单一的组件库)

  2. 使用 Jetpack 可以帮助我们在不同的 Android 版本和不同的设备上,实现行为一致的工作代码。(说明 Jetpack 可以轻松的处理由 Android 版本不一致和设备不同产生的差异性和兼容性问题)

 

Jetpack是一种新的架构方式,从工作到现在,经历过了MVC、MVP、MVVM、Clean等,每个项目由于项目特点和需求的不同,都会出现一套基于开发者所设计的架构模式,分层、组件化、模块化,每一种设计都是基于项目所在场景的,很难适合所有项目场景。

但是Jetpack,它是一套组件、工具和指导;是谷歌正式推出的一整套用来构建APP开发的组件。

对于产品,我们在开发中会遇到很多问题,比如:产品交互、用户体验、代码结构、数据获取、数据存储、网络优化、任务调度等等,很多问题还没有很好的解决和优化方案,Jetpack就是Google给出的官方处理方法。

为什么要学习Jetpack?

JetPack更多是一种概念和态度。相当于Google把自己的Android生态重新整理了一番。确立了Android未来的版图和大方向。

JetPack里目前包含的内容,未来也会是Google大力维护和扩展的内容。对应开发者来说也是值得去学习使用的且相对无后顾之忧的。JetPack里没有的,除开一些优秀的第三方库,未来应该也会慢慢被新的API替代,逐渐边缘化,直至打上Deprecate注解。

以当下的环境来说,要开发出一个完全摆脱 JetPack 的APP是很难做到的。但是反过来讲 JetPack 也远远没有到成熟的地步,目前也还存在亟待解决的问题,未来可以做的事情还有很多。

关于使用的话,并不是所有库都建议使用,因为目前还有很多库在alpha版本。但是作为学习还是很有必要的,能给你日常的开发中多提供一些思路,这些是无可厚非的。

总的来说,JetPack的推广对广大开发者而言是利远远大于弊的。

Android Jetpack组件的优势:

1、轻松管理应用程序的生命周期;

2、构建可观察的数据对象,以便在基础数据库更改时通知视图;

3、存储在应用程序轮换中未销毁的UI相关数据,在界面重建后恢复数据;

4、轻松的实现SQLite数据库;

5、系统自动调度后台任务的执行,优化使用性能;外行看热闹,内行看门道。

据Google官方统计,使用Jetpack之后,App的bug量可以大大减少约43%,代码量差不多可以缩减到之前的一半。

下面我列举一下关于Jetpack地高频面试题,看看你能答出来几个?

  • TOP 1:Jetpack MVVM 下的页面通信怎么做?
  • TOP 2:LiveData “数据倒灌” 是什么情况,如何解决?
  • TOP 3:UI 逻辑为什么不在 ViewModel 中写?
  • TOP 4:为什么不用 LiveDataBus?
  • TOP 5:Navigation replace 方式返回时,怎么恢复视图状态?
  • TOP 6:页面 onPause 的时候,不是不该收到消息吗?
  • TOP 7:《最佳实践》项目中的 “DataBinding 严格模式” 是怎么回事?
  • TOP 8:绑定视图状态,LiveData 和 ObservableField,怎么取舍?
  • TOP 9:LiveData observe 回调走了多次,该如何处理?
  • TOP 10:将《最佳实践》的 Navigation 修改版引入到自己项目,结果还是走的 replace,怎么办?
    答不出来的同学请自行点击下方链接,获得答案

怎样去学习Jetpack

如果你是因为缺少学习资料,而我正好收集了全网优秀博主Jetpack系列学习知识笔记,从入门到精通,教程通俗易懂,实例丰富,既有基础知识,也有进阶技能,能够帮助读者快速入门,通过向大牛分享Jetpack的学习心得,和项目实战,深入理解Jetpack精髓,上面的面试题答案文末也有详解

如果觉得看起来比较麻烦,需要PDF版本,或是需要更多学习资料(大厂面试真题解析),都可以点击我的GitHub领取。祝愿每一位有追求的Android开发同胞都能进大厂拿高薪!

相关的Jetpack全家桶的学习路线我也有探索:

 

由于路线图过于详细,所以并不能完整地贴上来,需要完整的Android架构师进阶路线图的同学请点击这里 下载地址

以上是关于互联网寒冬即将过去,Jetpack将是燃起来的第一把火的主要内容,如果未能解决你的问题,请参考以下文章

测试人员如何安然度过互联网寒冬

互联网寒冬!java开发视频上传表设计

互联网寒冬来临,快手裁员高薪员工,Android开发在寒冬下该如何抉择?进阶or创业

PHP高级必会:swoole分布式集群开发技术

如何在寒冬中找到好工作?

赋能数据智慧,InfoBeat让业务跃动起来