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

news2024/3/3 8:03:49

作为一个码龄 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 界的大佬。

图 灵 社 群

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://nwjs.net/news/141827.html

如若内容造成侵权/违法违规/事实不符,请联系七分地网进行投诉反馈,一经查实,立即删除!

相关文章

stylegan2 示例命令fused_bias_act.cu环境配置异常(无法打开包括文件: “tensorflow/core/framework/op.h”

在python运行stylegan2示例时,运行过程中,触发fused_bias_act.cu中的异常,可以看到fused_bias_act.cu中实际上是用c/c写的实现代码. 仔细看异常信息会发现这句话 无法打开包括文件: “tensorflow/core/framework/op.h”: 解决策略 1.首先确保你安装了c/c工具集,版本号可以有些…

中科院计算所沈华伟:GNN发展简史,诟病才是成长动力

文:周寅张皓图神经网络(Graph Neural Network)的应用在近年来蓬勃发展,但同时对其质疑也从未消失。诸如对与大规模图数据的存储问题,表达能力问题,以及数据集的规范问题引发了许多讨论。中科院计算所沈华伟…

赠书活动 | 数据挖掘经典入门

赠书活动在 AINLP 公众号。这本书相当受欢迎(前两个版本累计销量超过 5 万册),尤其是受学校青睐——在此也说声抱歉,出于出版时间的原因,很多学校依然采用了旧版作为教材;同时也请知悉,新版已上…

《C语言编程初学者指南》一2.9 理解运算符优先级

本节书摘来自异步社区《C语言编程初学者指南》一书中的第2章,第2.9节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.9 …

产品开发的 11 宗罪

题图 | created by freepik最近图灵君在翻看一本比较小众的书:《硬件产品设计与开发:从原型到交付》,没成想翻开前言和第 1 章都很惊艳,尤其是第 1 章总结的《产品开发的 11 宗罪》,真的让我受益匪浅。因为这篇文章总结…

盘点:2020 年机器学习 10 大进展

转载自:机器之心2020 年因为新冠疫情,很多人不得不在家工作和学习,大量人工智能学术会议也转为线上。不过在去年我们仍然看到了很多 AI 技术领域的进展。DeepMind 研究科学家 Sebastian Ruder 近日帮我们对去年的机器学习社区进行了一番总结。…

《精通自动化测试框架设计》—第1章 1.3节五天太久,还能压缩吗

本节书摘来自异步社区《精通自动化测试框架设计》一书中的第1章,第1.3节五天太久,还能压缩吗,作者陈冬严 , 邵杰明 , 王东刚 , 蒋涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.3 五天太久,还能压缩吗两…

终于!有本书把我从“看完就忘、死记硬背”的学习困境中拯救出来了!

设想一下,你面前有一堵由5000个魔方组成的魔方墙,从中间分割成两块,左右各2500个,并且它们的图案完全一致!这时,有人从右边的墙上随机挑选一个魔方,让九个方格中的一个变换颜色,你能…

一秒看遍10万神经元的「绚丽烟花」,AI究竟向大脑学什么?|北大陈良怡专访...

作者:梦佳大脑是人类进化的高级产物,重量约1.5公斤,占体重2%,功耗约20瓦,占全身功耗20%,当前人类对大脑的认识还不足5%,尚无完整的脑谱图可供参考。毫无疑问&…

一本真正讲“大数据”处理思路的书

这是我读到的第一本真正讲“大数据”处理思路的书,我想分享一下我读了这本书的感悟。一般情况下,在面对海量数据的时候,我们的软件架构也会跟着发生变化。当你的数据量在内存里放不下的时候,你就得考虑硬盘;当你的硬盘…

这些代码改变了科学界:从Fortran、arXiv到AlexNet

转自:机器之心2019 年,「事件视界望远镜」团队拍下了第一张黑洞照片。这张照片并非传统意义上的照片,而是计算得来的——将美国、墨西哥、智利、西班牙和南极多台射电望远镜捕捉到的数据进行数学转换。该团队公开了所用代码,使科学…

不存在完美的入门书,但是有些书在某些方面很惊艳

题图 | Technology vector created by stories - www.freepik.com前段时间收到了明发哥翻译的《Android 编程权威指南(第4版)》,许久没有打开纸质书,但翻阅时的纸墨味儿依旧,仿佛回到了几年前初学 XML 布局的时候。我从…

两院院士评选2020年中国、世界十大科技进展揭晓,「机器学习模拟上亿原子」等入选 | AI日报...

两院院士评选2020年中国、世界十大科技进展揭晓,「机器学习模拟上亿原子」等入选由中国科学院、中国工程院主办,中国科学院学部工作局、中国工程院办公厅、中国科学报社承办,腾讯集团发展研究办公室协办的中国科学院院士和中国工程院院士投票…

一本书带你入门商业数据科学

老马(Matt Taddy)是 Central Economics Team 的 VP,亚马逊北美首席经济学家。相当于大型智囊团里的二当家的。在来亚马逊之前,老马是芝加哥大学布斯商学院的明星教授,他是学数理统计出身的,一开始教授的是统…

面对500篇GNN论文,心态差点儿崩了,幸好我有这本小书

题图 | Computer vector created by stories - www.freepik.com说起来,大学时代的图灵君也算得上是零挂科修完全部计算机课程的人才。怀着对前沿技术的满腔热忱,年(yī)纪(tu)轻(xi)…

《因果科学周刊》第7期:2021因果强化学习第一课

为了帮助大家更好地了解因果科学的最新科研进展和资讯,我们因果科学社区团队本周整理了第7期《因果科学周刊》,推送近期因果科学领域值得关注的论文和资讯信息。本期的主题是“因果强化学习”,它在众多通向通用人工智能的路径中备受关注&…

JDK安装与环境变量配置

安装JDK 选择安装目录 安装过程中会出现两次 安装提示 。第一次是安装 jdk ,第二次是安装 jre 。建议两个都安装在同一个java文件夹中的不同文件夹中。(不能都安装在java文件夹的根目录下,jdk和jre安装在同一文件夹会出错) 如下图…

搞定了数学,拿下了代码,没想到在这件事上栽了跟头……

“我好像要失业了。”如果有一天,你的学霸老同学给你发了这样一条信息,你会怎么想?我就碰到了这样的事。当年我们系所向披靡的刚哥,毕业季能拿着一叠offer打扑克的牛人,他竟然告诉我他要失业了。#1被800字追杀的学霸“…

哈佛大学研发水下机器人,Science Robotics发表 | AI日报

哈佛大学研发水下机器人,Science Robotics发表日前,来自哈佛大学的科学家们就从鱼群中汲取灵感,研发出了一批水下机器人,这种机器人可以像真正的鱼群一样同步运动,且不需要任何外部控制。同时,他们也首次利…

日程来了!2021年佛山敏捷之旅暨第1届佛山DevOps社区Meetup

2021年佛山敏捷之旅暨第1届佛山DevOps社区Meetup首次在佛山举行,大会以金融科技研发效能为主题,立足广东金融高新区,服务周边企业。大会地点在广东佛山市南海区新凯广场万枫酒店,时间为5月16日,拟定2个会场&#xff0c…