普通视图
2024 十月读健康,育儿,黄易……7本
总结
这个月读的阅读主题是健康方面。读到的书,都很好,让人大开眼界。读完易经 我给川普算了一卦
读郑永年经济学作品小记
向投资者推荐《股票深度交易心理学》
2024 九月读性别研究,觉醒,跑步,歌德,茨维格,黄易……18本
《论生命之短暂》金句摘抄
2024 八月读政治,觉醒,卫青,草民…… 06 本
2024 七月读宇宙,易经,博伽梵歌,觉醒,认知行为疗法,哲学…… 10 本
2024 六月读动物保护,细雪,修行…… 7 本
2024 五月读经济危机,心理学,营养学,了凡四训,诗歌,科幻……10 本
引言
眼光朝外,准备改变实际的时候,你是否知道,你是谁?2024 四月读艺术史,女性传记,营养学,佛陀和觉醒……15 本
2024 三月读逻辑学,觉醒,小王子…5 本
一本讲 Android 流畅性的书,应该有什么内容?
最近读了一本新书:《打造流畅的 Android App》,京东链接:https://item.jd.com/10035215362170.html 。因为书名所以买了这本书,读完之后觉得有必要写一篇文章,让还没有买此书的同学了解一下
我个人的建议是:如果你是个老鸟,不建议买,这本书里面没有介绍太多原理性的东西,对于 Android 流畅性也没有一个比较全面的介绍;如果你是新手,这本书用来当做开阔视野 + 查漏补缺还可以,想更深入的了解 Android 流畅度还是差了点东西
之所以我会这么建议,是因为这本书确实没有讲太多性能或者流畅度相关的东西,也没有比较深入的原理部分,篇幅更多在讲静态代码审查、AS Profiler 的使用、App 架构、保活、网络性能优化、APK 大小优化、App 耗电等,内容也不深,浅尝辄止
内容介绍
简单介绍一下这本书的内容,其章节如下
- 概述 :简单介绍为何要做性能优化,以及 Android Studio 的配置
- 静态代码审查 :大篇幅降了各种静态代码审查工具,比如 Android Lint 、CheckStyle、SpotBugs、PMD 等,除了 Lint 其他的我接触不多,也算是查漏补缺了
- 使用 Android Profiler 优化性能 :主要降了 AS Profiler 工具里面的 CPU Profiler、Memory Profiler、Network Profiler、Network Profiler ,这里主要重点是工具的使用,大概性地介绍了一下
- 高质量的 App 从架构开始:主要是架构原则、MVC、MVP、MVVM 这些
- 优雅地保活 App :简单介绍了下保活相关的技术
- 网络性能优化专题 :网络交互与多线程 + 海量数据传输优化
- 优化 APK 体积 :老生常谈的 APK 大小优化,多渠道打包 + 优化资源文件 + 代码混淆
- App 耗电及 Crash 体验优化:简单介绍了一下
从上面章节标题大家也可以看到,跟流畅性相关的内容比较少,内容相对会比较杂一些,感兴趣的可以买一本看看
我认为一本讲流畅性的书,应该有什么?
如果让我写这么一本书,我肯定是写不来的,非常钦佩能出书的技术小伙伴,给作者点个赞。
不过这并不妨碍我嘴炮打个山响(I am good at it):所以我觉得如果让我来写这本书,我会加入下面这些内容,确保大家通过这本书,就可以深入理解 Android 的流畅性原理,且可以熟练使用各种工具来分析所遇到的流畅性问题
鉴于在讨论 Android 性能问题的时候,卡顿(流畅性)、响应速度、ANR 这三个性能相关的知识点通常会放到一起来讲,因为引起卡顿、响应慢、ANR 的原因类似,只不过根据重要程度,被人为分成了卡顿(流畅性)、响应慢、ANR 三种,所以我们可以定义广义上的流畅性,包含了卡顿(流畅性)、响应慢和 ANR 三种,所以如果用户反馈说手机卡顿或者 App 卡顿(流畅性),大部分情况下都是广义上的卡顿(流畅性),需要搞清楚,到底出现了哪一种问题
所以我设想的章节应该包含下面的内容
- 第一章:Android 流畅性概述:这一章主要会讲性能相关的一些概念,包括从用户角度、开发角度、测试角度、AOSP 的角度、硬件角度等,讲述流畅性的一些概念。这一点很重要,因为在实践中发现,用户和开发、测试往往是同不同的角度来看待流畅度的,思考问题的时候别把自己的思维定在某一个角色,往往会有不一样的结果
- 第二章:Android 运行机制概述:这一章主要会讲一些 Android 运行机制相关的内容,了解这些知识点,对于分析 Android 流畅性问题是必须的,当下面这些知识点你非常熟悉之后,碰到流畅性的问题,你的脑海中就有一个图形化的工具在运转:用户怎么操作的、系统怎么反馈的、App 运行到了哪里、最有可能是哪里出现了问题、用什么工具去 Debug 最方便
- App 主线程运行原理(主线程和渲染线程)
- Message、Handler、MessageQueue、Looper 机制
- 屏幕刷新机制和 Vsync
- Choreogrepher 机制
- Buffer 工作流和 SurfaceFlinger 工作流
- Input 流程
- ANR 的设计思想
- 第三章:性能分析工具介绍:正所谓 工欲善其事必先利其器,趁手的工具对于分析性能问题至关重要,这一章主要会讲性能分析经常遇到的工具,并非是简单的介绍,会结合 Android 系统机制来讲解,工具主要包括但不限于 Systrace(Perfetto) 、AS Profiler、SimplePerf、MAT、Log 工具(Log 内容分析和 Log 原理)、命令行工具(dumpsys meminfo、dumpsys gfxinfo、dumpsys cpuinfo、dumpsys SurfaceFlinger、dumpsys activity、dumpsys input、dumpsys window 等)、三方性能库(Koom、Matrix、Facebook profilo、BlockCanary、LeakCanary、Tailor/Raphael 等)
- 第四章:深入分析 Android 卡顿问题:运行机制和工具都介绍完了,那么接下来就是如何进行实战了,这一章主要会讲卡顿出现的原因、分析卡顿问题的套路、案例分享、编码最佳实践等
- 第五章:深入分析 Android 响应速度问题:同上,响应速度问题实战环节,这一章主要会讲响应速度问题出现的原因、分析响应速度问题的套路、案例分享、编码最佳实践等
- 第六章:深入分析 Android ANR 问题:ANR 也是用户体验的一部分,这里主要会讲 ANR 的设计思想、ANR 的几种类型、ANR 出现的原因、ANR 问题的分析套路、案例分享、编码最佳实践等(目测会有很大的篇幅)
- 第七章:深入分析 Android 内存问题:内存问题同样是影响用户体验一部分,而且是一个比较重要的性能指标,你懂得。本章会介绍 App 的内存占用、App 内存分析工具、内存泄漏分析、内存持续增长分析等,这里面的内容估计会牵扯到比较多的知识点,任重而道远啊….
- 第八章:性能测试:从测试的角度来看流畅性问题,这里会讲一些 性能指标获取(侵入式和非侵入式)、性能标准制定、竞品分析、提 Bug 的标准和流程、整机测试方法、权威第三方的性能测试方法和标准介绍(绿色联盟、鲁大师、友盟、Bugly 等)、性能监控工具开发(比如 Matrix、Koom、Fastbot、UI Automator、内存增长测试等),以及一些软技能:如何区分 Android 系统问题和 App 问题、如何与开发和 PM 扯皮(开个玩笑) 等
- 第九章:线上性能监控:上一章讲的是本地性能测试,而这一章会讲线上是如何监控流畅度的,跟线下监控有区别的是,线上监控既要能体现真实的用户体验,又要尽量减少对用户的影响,还需要在发现问题的时候,能及时进行数据上报
- 第十章:系统性能优化介绍:App 开发者使用各种方法和黑科技来进行性能监控和性能分析,那么 Android 系统开发者又是如何做的呢?这一章会介绍一些各种厂商的性能优化、AOSP 的性能优化、高通和 MTK 的优化等
- 第十一章:高效工作指南:内容暂定,包括但不限于
- AOSP 代码编译的必要性和流程
- 阅读 AOSP 代码的技巧,比如 cs.android.com、导入 AS、导入 vscode 等、画流程图等
- Windows、Linux 、Mac 开发环境推荐、配置命令行等
- 工作方式推荐:多写、多记、多总结、多分享
嘴炮输出完毕,万事俱备,只欠大佬来完善内容了…
市面上还有哪些讲性能的书?
讲道理目前市面上的书都有点年代了,倒是掘金社区的 Android 性能优化文章非常多,各种大厂也乐意将他们的内部工具开源,给这些热爱分享小伙伴点个赞,让我们站在巨人的肩膀上前行
我本人看过的几本书
- 腾讯 TMQ 专项测试团队出的:《移动 App 性能评测与优化》,2016 年出版,专业性和实战拉满,值得一看,https://item.jd.com/11976603.html 微信读书:有电子书
- 邓老师的 《深入理解 Android:Java 虚拟机 ART》,ART 虚拟机的大部头书,对于了解 ART 虚拟机的运行有很大的帮助,App 的不少黑科技都会涉及到虚拟机 https://item.jd.com/12510921.html 微信读书:有电子书
- 道格・西勒斯(Doug Sillars)的 《高性能 Android 应用开发》,2016 年出版,英文原版更早一些,算是一个比较早的全方位讲解 Android App 性能的书了,感兴趣的可以收藏一本 https://item.jd.com/11995735.html 微信读书:没有电子书
- 腾讯大佬出的:《Android 应用性能优化最佳实践》,2017 年出版,内容也是性能相关 https://item.jd.com/12043655.html 微信读书:有电子书
- Brendan Gregg 大师新作:《BPF 之巅:洞悉 Linux 系统和应用性能》,中文版 2020 年出版,大部头工具书,屯之 https://item.jd.com/12769029.html 微信读书:没有电子书
- 同样是 Brendan Gregg 的 《性能之巅:洞悉系统、企业与云计算》,中文版 2020 年出版,大部头工具书,搞性能的应该人手一本… https://item.jd.com/12749867.html 微信读书:有电子书
- 张绍文的《Android 开发高手课》https://time.geekbang.org/column/intro/142 最近重新听的感悟:高手就是高手
- 倪朋飞的 Linux 性能优化实践
写在最后
- 欢迎大家留言分享自己看过的觉得非常不错的 Android 性能相关的书籍、博客、视频课、官方教程等
- 欢迎大家留言分享你们认为一本讲 Android 流畅性的书,应该包含哪些内容
- 本文不涉及任何推广,大家放心食用
- 博客交流不方便,有疑问的可以在知乎或者微信公众号下面留言,或者直接加我微信(553000664),备注 Blog 即可
关于我 && 博客
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 博主个人介绍 :里面有个人的微信和微信群链接。
- 本博客内容导航 :个人博客内容的一个导航。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- Android性能优化知识星球 : 欢迎加入,多谢支持~
一个人可以走的更快 , 一群人可以走的更远
程序员的修炼-08-阅读之美
本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第八篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。
我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:
- 程序员的修炼-01:绝地反击之术
- 程序员的修炼-02:编程之道
- 程序员的修炼-03:Web 设计原则
- 程序员的修炼-04:关于测试的一些思考
- 程序员的修炼-05:了解你的用户
- 程序员的修炼-06:互联网那些事
- 程序员的修炼-07:游戏与编程
- 程序员的修炼-08:阅读之美
不读书,谁之过
自助者,天助之
计算机犯罪的历史与现状
如何与人交流
勤练基本功
《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣
Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣
《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣
关于我 && 博客
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 博主个人介绍 :里面有个人的微信和微信群链接。
- 本博客内容导航 :个人博客内容的一个导航。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- Android性能优化知识星球 : 欢迎加入,多谢支持~
一个人可以走的更快 , 一群人可以走的更远
程序员的修炼-07-游戏与编程
本文是 <程序员的修炼-从优秀到卓越> 的读书笔记的第七篇,这本书的作者是 Jeff Atwood,StackOverflow 的创始人之一,Jeff 的文章涉及面很广,他是一个经验老道的程序员、管理者、创业者,这本书谈到了编程之外的很多东西,不管你是初级工程师,还是资深工程师,本书都值得一读。随着你的阅历的增加,每一次重读这本书,都会有不一样的感悟,正如书名“从优秀到卓越”,作者为你指明了道路,至于是否能成功,则要看自己的修炼了。
我会把读书过程中一些精彩的言论摘录下来,有时会加入一些自己的见解或者经历,读书笔记的大纲与书本身的大纲是一致的,这也是我从另外一个地方学到并一直在用的“如何阅读一本书”,记录下来方便自己经常查看,也方便读者查看。下面是<程序员的修炼-从优秀到卓越> 读书笔记系列:
- 程序员的修炼-01:绝地反击之术
- 程序员的修炼-02:编程之道
- 程序员的修炼-03:Web 设计原则
- 程序员的修炼-04:关于测试的一些思考
- 程序员的修炼-05:了解你的用户
- 程序员的修炼-06:互联网那些事
- 程序员的修炼-07:游戏与编程
- 程序员的修炼-08:阅读之美
我的编程生涯是与 BASIC
想玩游戏就自己写
游戏玩家到程序员的蜕变
《程序员的修炼——从优秀到卓越》是《高效能程序员的修炼》的姊妹篇,包含了Coding Horror博客中的精华文章。全书分为8章,涵盖了时间管理、编程方法、Web设计、测试、用户需求、互联网、游戏编程以及技术阅读等方面的话题。作者选取的话题,无一不是程序员职业生涯中的痛点。很多文章在博客和网络上的点击率和回帖率居高不下—— from 豆瓣
Jeff Atwood于2004年创办Coding Horror博客(.codinghorror.),记录其在软件开发经历中的所思所想、点点滴滴。时至今日,该博客每天都有近10万人次的访问量,读者纷纷参与评论,各种观点与智慧在那里不断激情碰撞 —— from 豆瓣
《程序员的修炼——从优秀到卓越》的写作风格风趣幽默,且充满理解和关怀;适合从新手到老手的各个阶段的程序员阅读,也适合即将成为程序员的计算机和相关专业的学生阅读。《程序员的修炼——从优秀到卓越》能够帮助读者更多地关注技术工作的人性和人文因素,从而实现程序员职业生涯的成功转折 —— from 豆瓣
关于我 && 博客
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 博主个人介绍 :里面有个人的微信和微信群链接。
- 本博客内容导航 :个人博客内容的一个导航。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- Android性能优化知识星球 : 欢迎加入,多谢支持~
一个人可以走的更快 , 一群人可以走的更远