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

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

yuyutoo 2025-05-21 17:40 5 浏览 0 评论


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

相关推荐

【Socket】解决UDP丢包问题

一、介绍UDP是一种不可靠的、无连接的、基于数据报的传输层协议。相比于TCP就比较简单,像写信一样,直接打包丢过去,就不用管了,而不用TCP这样的反复确认。所以UDP的优势就是速度快,开销小。但是随之...

深入学习IO多路复用select/poll/epoll实现原理

Linux服务器处理网络请求有三种机制,select、poll、epoll,本文打算深入学习下其实现原理。0.结论...

25-1-Python网络编程-基础概念

1-网络编程基础概念1-1-基本概念1-2-OSI七层网络模型OSI(开放系统互联)七层网络模型是国际标准化组织(ISO)提出的网络通信分层架构,用于描述计算机网络中数据传输的过程。...

Java NIO多路复用机制

NIO多路复用机制JavaNIO(Non-blockingI/O或NewI/O)是Java提供的用于执行非阻塞I/O操作的API,它极大地增强了Java在处理网络通信和文件系统访问方面的能力。N...

Python 网络编程完全指南:从零开始掌握 Socket 和网络工具

Python网络编程完全指南:从零开始掌握Socket和网络工具在现代应用开发中,网络编程是不可或缺的技能。Python提供了一系列高效的工具和库来处理网络通信、数据传输和协议操作。本指南将从...

Rust中的UDP编程:高效网络通信的实践指南

在实时性要求高、允许少量数据丢失的场景中,UDP(用户数据报协议)凭借其无连接、低延迟的特性成为理想选择。Rust语言凭借内存安全和高性能的特点,为UDP网络编程提供了强大的工具支持。本文将深入探讨如...

Python 网络编程的基础复习:理解Socket的作用

计算机网络的组成部分在逻辑上可以划分为这样的结构五层网络体系应用层:应用层是网络协议的最高层,解决的是具体应用问题...

25-2-Python网络编程-TCP 编程示例

2-TCP编程示例应用程序通常通过“套接字”(socket)向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通信。Python语言提供了两种访问网络服务的功能。...

linux下C++ socket网络编程——即时通信系统(含源码)

一:项目内容本项目使用C++实现一个具备服务器端和客户端即时通信且具有私聊功能的聊天室。目的是学习C++网络开发的基本概念,同时也可以熟悉下Linux下的C++程序编译和简单MakeFile编写二:需...

Python快速入门教程7:循环语句

一、循环语句简介循环语句用于重复执行一段代码块,直到满足特定条件为止。Python支持两种主要的循环结构:for循环和while循环。...

10分钟学会Socket通讯,学不会你打我

Socket通讯是软硬件直接常用的一种通讯方式,分为TCP和UDP通讯。在我的职业生涯中,有且仅用过一次UDP通讯。而TCP通讯系统却经常写,正好今天写了一个TCP通讯的软件。总结一下内容软件使用C#...

Python 高级编程之网络编程 Socket(六)

一、概述Python网络编程是指使用Python语言编写的网络应用程序。这种编程涉及到网络通信、套接字编程、协议解析等多种方面的知识。...

linux网络编程Socket之RST详解

产生RST的三个条件:1.目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;2.TCP想取消一个已有的连接;3.TCP接收到一个根本不存在的连接上的分节;现在模拟上面的三种情况:cl...

ABB机器人编程实用技巧,多项案例

...

Python中实现Socket通讯(附详细代码)

套接字(socket)是一种在计算机网络中进行进程间通信的方法,它允许不同主机上的程序通过网络相互通信。套接字是网络编程的基础,几乎所有的网络应用程序都使用某种形式的套接字来实现网络功能。套接字可以用...

取消回复欢迎 发表评论: