百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

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

wptr33 2025-05-23 20:39 22 浏览


作为一个码龄 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 的第三方库,就很容易从零到一搭建应用框架了。

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

  • View 测量算法我知道
  • Android事件分发机制抽象--钓钩模型
  • Android事件分发-来龙去脉

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

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 界的大佬。



你身边有学习 Android 开发或是对 Android 开发工程师感兴趣的朋友吗?

赶快点赞分享给他们吧~

<script type="text/javascript" src="//mp.toutiao.com/mp/agw/mass_profit/pc_product_promotions_js?item_id=6959037753443107342"></script>

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China&#39;s top diplomat to chair third China-Pacific Island countries foreign ministers&#39; meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...