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

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

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


作为一个码龄 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>

相关推荐

MySQL进阶五之自动读写分离mysql-proxy

自动读写分离目前,大量现网用户的业务场景中存在读多写少、业务负载无法预测等情况,在有大量读请求的应用场景下,单个实例可能无法承受读取压力,甚至会对业务产生影响。为了实现读取能力的弹性扩展,分担数据库压...

Postgres vs MySQL_vs2022连接mysql数据库

...

3分钟短文 | Laravel SQL筛选两个日期之间的记录,怎么写?

引言今天说一个细分的需求,在模型中,或者使用laravel提供的EloquentORM功能,构造查询语句时,返回位于两个指定的日期之间的条目。应该怎么写?本文通过几个例子,为大家梳理一下。学习时...

一文由浅入深带你完全掌握MySQL的锁机制原理与应用

本文将跟大家聊聊InnoDB的锁。本文比较长,包括一条SQL是如何加锁的,一些加锁规则、如何分析和解决死锁问题等内容,建议耐心读完,肯定对大家有帮助的。为什么需要加锁呢?...

验证Mysql中联合索引的最左匹配原则

后端面试中一定是必问mysql的,在以往的面试中好几个面试官都反馈我Mysql基础不行,今天来着重复习一下自己的弱点知识。在Mysql调优中索引优化又是非常重要的方法,不管公司的大小只要后端项目中用到...

MySQL索引解析(联合索引/最左前缀/覆盖索引/索引下推)

目录1.索引基础...

你会看 MySQL 的执行计划(EXPLAIN)吗?

SQL执行太慢怎么办?我们通常会使用EXPLAIN命令来查看SQL的执行计划,然后根据执行计划找出问题所在并进行优化。用法简介...

MySQL 从入门到精通(四)之索引结构

索引概述索引(index),是帮助MySQL高效获取数据的数据结构(有序),在数据之外,数据库系统还维护者满足特定查询算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构...

mysql总结——面试中最常问到的知识点

mysql作为开源数据库中的榜一大哥,一直是面试官们考察的重中之重。今天,我们来总结一下mysql的知识点,供大家复习参照,看完这些知识点,再加上一些边角细节,基本上能够应付大多mysql相关面试了(...

mysql总结——面试中最常问到的知识点(2)

首先我们回顾一下上篇内容,主要复习了索引,事务,锁,以及SQL优化的工具。本篇文章接着写后面的内容。性能优化索引优化,SQL中索引的相关优化主要有以下几个方面:最好是全匹配。如果是联合索引的话,遵循最...

MySQL基础全知全解!超详细无废话!轻松上手~

本期内容提醒:全篇2300+字,篇幅较长,可搭配饭菜一同“食”用,全篇无废话(除了这句),干货满满,可收藏供后期反复观看。注:MySQL中语法不区分大小写,本篇中...

深入剖析 MySQL 中的锁机制原理_mysql 锁详解

在互联网软件开发领域,MySQL作为一款广泛应用的关系型数据库管理系统,其锁机制在保障数据一致性和实现并发控制方面扮演着举足轻重的角色。对于互联网软件开发人员而言,深入理解MySQL的锁机制原理...

Java 与 MySQL 性能优化:MySQL分区表设计与性能优化全解析

引言在数据库管理领域,随着数据量的不断增长,如何高效地管理和操作数据成为了一个关键问题。MySQL分区表作为一种有效的数据管理技术,能够将大型表划分为多个更小、更易管理的分区,从而提升数据库的性能和可...

MySQL基础篇:DQL数据查询操作_mysql 查

一、基础查询DQL基础查询语法SELECT字段列表FROM表名列表WHERE条件列表GROUPBY分组字段列表HAVING分组后条件列表ORDERBY排序字段列表LIMIT...

MySql:索引的基本使用_mysql索引的使用和原理

一、索引基础概念1.什么是索引?索引是数据库表的特殊数据结构(通常是B+树),用于...