书评 | 9 年码龄工程师读 Android 经典

作为一个码龄 9 年的 Android 开发工程师,因业界大前端趋势,从18 年开始更多的时间专注在 React Native 上,Android 相关新技术日渐生疏了。Kotlin 和 Jetpack 等新技术一直缺乏上手了解的机会,是时候通过一本书体系化地了解一下相关知识,最起码当我们谈论到 Android 技术时不至于自己的知识太落后就要挨打。

有朋友推荐了图灵出版的《Android 编程权威指南(第4版)》,全文通过七个 Kotlin 语言写的 Demo,结合 Jetpack 将 Android 常用知识点和技术栈从零到一串起来,文章延续了译文文笔优雅的优良传统,不会觉得枯燥乏味,而且有插入背景知识点和课后习题更便于理解和巩固,看完之后对 Kotlin 和 Jetpack 有了大致的了解。简单总结介绍一下,希望对大家有点帮助。

回到起点,如果学 Android,我们需要知道简单的 Android 应用应该具备什么?毫无疑问,最简单直接的方式就是从一个简易单机单页面 Demo 开始,顺带介绍了 Android Studio 代码开发工具的常用功能。

随着业务迭代,代码复杂度不断增加,这个时候我们都会嫌弃旧的代码结构过于臃肿杂乱,经常说的一句就是要重构代码。那么,这么通用的问题业界有现成的解决方案吗?

于是,MVC(Model-View-Controller)设计模式登场了,包括进一步演进的 MVVM(Model-View-ViewModel)。本质上,MVX 都是从项目整体视角出发分类组织代码,便于理解和复用。这一块在公司项目中使用较广泛,最大的问题就是该设计模式只是一种组织代码的指导思想,大家对各个角色边界的划分略有出入,衍生出各种变种写法,导致理解和复用成本增加——这个时候从一个标准的 MVX 设计模式开始入门就显得弥足珍贵了,恰恰《Android 编程权威指南》书中的七个 Demo 就是这个标准化的入门,对真实的业务开发场景有较大的借鉴意义。

众所周知,功能开发完成后,接下来比拼的就是用户体验,理解并做好 Activity 生命周期中的各项工作,不但能避免低级的 Bug,还能让你的应用更易用,如设备旋转后数据没有丢失,分屏模式下仍然符合用户的使用习惯。之前,我们可能自己写相关逻辑来保证这一点,现在,ViewModel 就能轻松帮忙搞定,而且代码的可读性更高了,这也是学习新特性的用处。

如果说功能开发知道相关知识点就能做,那么问题排查就比较考验综合素质了。LogCat 日志和 Debug 调试是开发提效不可或缺的手段。当然,难点问题分析还是比较考验逻辑能力和耐心。也许大家都有一套自己的问题排查方法,但是此时必须虚心学习一下,因为你知道的可能是十八般武器中的十二件,其他的几个也许成了你的思维盲区,这时候有一个章节系统地说一下有哪些使用技巧就比较关键了。通常很多同学一听说程序有 Bug,就迫不及待地直接上手调试了,虽然最终也能解决问题,但是兜兜转转费了大半天劲,不妨回过头来总结一下怎么少走弯路。

个人经验,LogCat 用于粗步定位缩小范围,Debug 用于精确定位问题原因。另外,运行时可以在断点中打开 Evaluate Expression 手动注入代码逻辑,比方说修改变量来调整执行代码逻辑分支,这个就非常有用了,最起码你不用改代码重新编译一遍才知道逻辑是否正确(在真正项目中,编译过程可是个漫长的等待)。打印日志的第三个参数可以主动创建异常打印当前调用栈,即Log.d(TAG, "Updating question text", Exception())不得不说是一个小窍门,特别是频繁调用的方法,如果直接 Debug 会断点住几十到上百次直到让你怀疑人生。还有布局检查器,也是我比较喜欢的工具,除查看属性是否设置错误外,我用得比较多的就是通过 Activity 名称和组件名称快速定位当前出错页面相关代码位置,这对你第一次接触的工程排查定位非常有效。

说到这儿,上面好像只是个单页面单功能,复杂功能就需要考虑多页面单功能和单页面多功能怎么做,这就涉及了页面跳转、页面间数据传递和单 activity 多 fragment 架构了。另外像常见的长列表、各种不规则摆放的布局,使用 ListView 和自定义布局当然也能做,但是显然没有 RecyclerView 和 ConstraintLayout 来得爽快,简单随心用。毕竟,Google 有义务提升 Android 开发体验(偷笑)。

数据库操作通常用得比较少,一般都直接使用网络数据,本次持久存储使用 JSON + SharePreferences 也就能满足要求了,但仍然有一些场景需要该功能,以前可能觉得略显繁琐,Jetpack 架构组件库中的 Room 和 LiveData 为此而生,更简单更解耦的操作帮你轻松提效。

剩下的需要进一步雕琢的就是细节了,对话框、标题栏、通过 Intent 使用系统通用功能,如拍照、联系人信息等。利用好 Activity 栈也是一个细活,细心的同学会测试应用的跳转和返回是不是让用户用起来很方便。

网络请求是一个应用不可或缺的能力,目前最好用的库必须是 Retrofit 网络请求框架、配套的 Gson 数据转换器和 RxJava,有这三样,网络就很 easy 了。说到网络,我们就不得不提到后台线程,熟悉的同学可能会自己用 Handler 手写一个,或者用线程池,但总觉得还是有点不好用,Jetpack 中的 WorkManager 你值得拥有。

Jetpack 涉及的基础、架构、行为和界面四大类功能封装,基本涵盖项目开发中的大部分问题。 

结合 GitHub 上 Star 数 Top 的第三方库,就很容易从零到一搭建应用框架了。

自定义控件和事件分发讲的比较基础,不过对于入门也够了。这一块更多涉及进阶的操作,感兴趣的可以看看我之前写的三篇文章(写文章是个单点技术突破的好方式,建议大家也尝试一下):

分享一些公司项目中的感悟。

1. 公司级工程项目一般都比较复杂,把事情做成的决心和快速排查定位问题的能力至关重要。

2. 稍微勤快一点,遇到问题花些时间解决了,那自己就成长了。

3.《Android 编程权威指南》更像是一个从零到一的项目学习过程,公司内部通常情况下都有现成的相关技术栈,你遇到的问题大概率不是第一次遇到,尽量复用已有技术,对新技术采用渐进式引入验证。

4. 读书可以放到自己的生活工作节奏中来,养成良好的持续性习惯,享受这份美好的休憩时光。

END 

以上是圈内一位读者朋友盛书强写的书评,接下来,我们再来了解一下这本书。

目录思维导图一览

这本书被读者看作「Android入门与进阶双雄之一」,为何值得你学习?

1. 实战项目引导,全面覆盖 Android 开发知识点

2. 使用 Kotlin 编写,兼容 Android 5.0 至 11.0

3. 随书附赠 Android 开发速查表,随用随查

4. 业内专家张鸿洋、张涛、丰生强、丁志虎、2BAB 推荐阅读

内容简单介绍

Big Nerd Ranch 是美国一家专业的移动开发技术培训机构。本书主要以其 Android 训练营教学课程为基础,融合了几位作者多年的心得体会,是一本完全面向实战的 Android 编程权威指南。全书共 32 章,详细介绍了 7 个 Android 应用的开发过程。通过这些精心设计的应用,读者可掌握很多重要的理论知识和开发技巧,获得宝贵的开发经验。

第 4 版较之前版本做了重大更新,每一章的内容都做了修改。开发语言从 Java 换成了 Kotlin。全面引入了 Android Jetpack 组件库并开始使用第三方库。

本书适合 Android 开发人员阅读。

业内专家是如何评论这本书的?

初学Android有幸阅读本书早期版本,收获颇丰,尤其是对fragment认识深刻。本书最大的特色是以实战的方式引领大家学习,每每讲到新知识点,都会立刻融入具体的案例,助你充分理解与掌握。

——张鸿洋,wanandroid站长

本书介绍的技术点足够与时俱进,能够帮你跨越学习的初始障碍,是一本大而全的Android入门书,值得常备手边,翻阅学习。

——张涛,Android技术专家,开源实验室博主

《Android编程权威指南(第3版)》堪称经典,新版的升级更是众望所归。强烈推荐移动开发与安全研究人员阅读本书。

——丰生强,《Android软件安全与逆向分析》作者

不像大多数书只是机械地传授知识,本书精心设计了很多应用开发实例,基本涵盖了日常开发所需要的内容,很适合新手入门。此外,本书行文风格轻松,在技术书中比较难得。

——丁志虎,美团Android技术专家

本书基于Kotlin和Jetpack编写,紧跟近年的开发新趋势,章节安排循序渐进,场景实例引人入“码”;代码检查、代码测试和无障碍等章节不仅给初学者启蒙了良好代码设计的重要性,也给图书本身增添了温度。此外,值得一提的是,译文保持了一贯的优良水准,清爽舒畅。

——2BAB,Android高级工程师
《Android构建与架构实战》(写作中)作者

看了上面读者的书评以及业内大佬的书评,如果你对 Android 感兴趣,就不要犹豫了,选对的书会让你进入这个圈子事半功倍,少走很多弯路,坚持下去,你也会成为 Android 界的大佬。

图 灵 社 群

喜欢这篇文章?点个“在看”吧~▼

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值