前言

前言

你正在构建一个 Android App 吧(或者你已经构建了一个 App)?你肯定对自己 App 的性能并不满意。(不然你为什么要看这本书呢?)揭示移动 App 的性能问题是一个持续性的工作。我的研究发现,98% 的 App 存在潜在的性能改进空间。本书将涵盖移动性能的隐患,并为你介绍一些测试这些问题的工具。我的目标是帮助你获得这些必要的技能,在重大的性能问题影响到用户之前捕获它。

研究表明,用户期望移动 App 能够快速加载,迅速响应用户的交互,并且在视觉上很流畅、美观。随着 App 变得更加快速,用户的参与度和收益也在增长。没有关注性能的 App 的卸载率和那些会崩溃的 App 的卸载率相同。那些资源利用率低的 App 会造成不必要的电池消耗。运营商和设备制造商收到用户投诉最多的就是电池寿命了。

在过去的几年里,我和成千上万的开发者谈过 Android App 的性能问题。很少有开发者知道有可用的工具能够解决他们遇到的问题。

明确的共识是:运行快速、流畅的移动 App 会更多地被使用,能够为开发者带来更多的收益。令人惊奇的是,哪怕知道这些,很多开发者还是没有使用可用的工具来诊断和定位他们 App 中的性能问题。通过关注性能的提升是如何影响用户体验的,你能够快速地了解你对 App 所做的性能优化工作所带来的收益。

本书读者

本书以 Android 性能为中心涵盖了一系列广泛的主题。任何和移动开发相关的人员都会喜欢本书中关于 App 性能的研究。非 Android 移动开发者将会发现书中关于 App 性能的争论和问题是非常有用的,但用于隔离问题的工具是专门用于 Android 的。

测试人员将会发现用于测试 Android 性能的工具的教程也同样非常实用。

我为什么写这本书

开发者在 Web 性能这个广阔的新兴领域里分享了提高 Web 速度的技巧。Steve Souders 在 2007 年写了《高性能网站建设指南》一书,众多书籍、博客和会议都讨论了这个主题。

此前,移动 App 的性能很少受到关注。App 运行缓慢都被归罪于操作系统或者移动网络,而电量持续时间短则被归罪于设备的硬件。随着手机越来越快,操作系统越来越成熟,用户开始明白 App 对手机性能的影响。

有很多非常棒的工具可以用来衡量 Android App 的性能,但是到目前为止,还没有人对它们进行归纳和整理。通过介绍 Google、Qualcomm、AT&T 以及其他公司的性能测量工具,我希望本书能将 Android 性能测试的奥秘展现出来,帮助你的 App 在不增加用户耗电量的情况下运行得更加快速。

本书预览

当研究 App 性能时,我选择了研究 App 的代码对 Android 设备不同方面的影响。我们将从一个比较高阶的层面开始:性能和 Android 的生态系统,然后查看 App 对屏幕、CPU 以及网络栈等的影响。

  • 第 1 章,Android 的性能指标

    这一章介绍了移动 App 的性能这一话题。我们将用一些例子来证明 App 性能的重要性。文中会强调现在面临的挑战,同样也会列出性能低下在应用市场中的影响。我们还会列出一些统计数据,你可以拿这些数据去说服管理层,让他们在提高 App 性能方面投入更多的精力和时间。这里所给出的数据一般涵盖了所有的移动平台和设备。

  • 第 2 章,构建 Android 设备实验室

    这一章将讨论测试。Android 是一个巨大的生态系统,包括了上万种设备,并且每一种设备都有不同的 UI、屏幕、处理器以及操作系统版本(仅举几例)。我将探索一些方法,帮助你测试尽可能多的设备,并且不会花费过高。

  • 第 3 章,硬件性能和电池续航

    接下来,我们将讨论电池,包括电量流失的原因以及流失的多少。另外,这一章将讨论用户是如何发现 App 中的电量问题的,以及如何使用开发工具来避免这些问题。我们也会学习新的 JobScheduler API(在 Lollipop 版本中发布),它可以从操作系统中唤起 App。

  • 第 4 章,屏幕和 UI 性能

    屏幕是手机上功耗最大的一部分。屏幕是 App 的主要接口,性能差的 App 的卡顿(跳帧)和慢速渲染正是通过屏幕展现出来的。这一章将通过使层级更加扁平化来一步步优化 UI,然后介绍如何使用 Systrace 等工具对 App 进行卡顿和抖动的测试。

  • 第 5 章,内存性能;第 6 章,CPU 与 CPU 性能

    我们在这两章讨论内存和 CPU 问题,如垃圾回收、内存泄露,以及它们是如何影响 App 性能的。你将学会如何运用测试工具,如 procstats、内存分析工具(MAT)和 Traceview,剖析 App 以发现潜在的问题。

  • 第 7 章,网络性能

    我们将在这一章讨论 App 的网络性能。我们从这里开始探讨移动性能优化,探究 App 是如何与服务器进行通信的,以及我们应该如何加强这些通信。然后介绍如何测试 App 在慢网上的性能,因为许多发展中国家未来几十年用的可能都是 2G 和 3G 网络。

  • 第 8 章,真实用户监测

    最后,我们将会讨论如何使用真实用户监测和分析数据,从而保证每台设备都能得到最佳用户体验。如第 2 章所述,无法测试实验室外的每台 Android 设备,但是你可以通过用户设备上的用户监控来获取数据。

  • 附录,组织性能

    在此附录中,我们将讨论组织性能,包括如何开始支持构建高性能 App。通过分享探索、成功的案例和概念验证,你可以向公司证明,将性能作为公司追求的目标之一可以改善公司的盈利状况。

使用代码示例

补充材料(代码示例、练习等)可以从 https://github.com/dougsillars/HighPerformance-AndroidApps 下载。

本书是要帮你完成工作的。一般来说,如果本书提供了示例代码,你可以把它用在你的程序或文档中。除非你使用了很大一部分代码,否则无需联系我们获得许可。比如,用本书的几个代码片段写一个程序就无需获得许可,销售或分发 O'Reilly 图书的示例光盘则需要获得许可;引用本书中的示例代码回答问题无需获得许可,将书中大量的代码放到你的产品文档中则需要获得许可。

我们很希望但并不强制要求你在引用本书内容时加上引用说明。引用说明一般包括书名、作者、出版社和 ISBN。比如:“High Performance Android Apps by Doug Sillars (O'Reilly). Copyright 2015 AT&T Services, Inc., 978-1-491-91251-5.”

如果你觉得自己对示例代码的用法超出了上述许可的范围,欢迎你通过 permissions@oreilly.com 与我们联系。

排版约定

本书使用了下列排版约定。

  • 楷体

    表示新术语。

  • 等宽字体(constant width

    表示程序片段,以及正文中出现的变量、函数名、数据库、数据类型、环境变量、语句和关键字等。

  • 加粗等宽字体(constant width bold

    表示应该由用户输入的命令或其他文本。

  • 等宽斜体(Constant width italic

    表示应该由用户输入的值或根据上下文确定的值替换的文本。

 该图标表示提示或建议。

 该图标表示一般注记。

 该图标表示警告或警示。

Safari® Books Online

Safari Books Online(http://www.safaribooksonline.com)是应运而生的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。技术专家、软件开发人员、Web 设计师、商务人士和创意专家等,在开展调研、解决问题、学习和认证培训时,都将 Safari Books Online 视作获取资料的首选渠道。

对于组织团体、政府机构和个人,Safari Books Online 提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问 O'Reilly Media、Prentice Hall Professional、Addison-Wesley Professional、Microsoft Press、Sams、Que、Peachpit Press、Focal Press、Cisco Press、John Wiley & Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones & Bartlett、Course Technology 以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解 Safari Books Online 的更多信息,我们网上见。

联系我们

请把对本书的评价和问题发给出版社。

美国:

  O'Reilly Media, Inc.

  1005 Gravenstein Highway North

  Sebastopol, CA 95472

中国:

  北京市西城区西直门南大街 2 号成铭大厦 C 座 807 室(100035)

  奥莱利技术咨询(北京)有限公司

O'Reilly 的每一本书都有专属网页,你可以在那儿找到本书的相关信息,包括勘误表、示例代码以及其他信息。本书的网站地址是:

  http://www.oreilly.com/catalog/0636920035053.do

对于本书的评论和技术性问题,请发送电子邮件到:bookquestions@oreilly.com

要了解更多 O'Reilly 图书、培训课程、会议和新闻的信息,请访问以下网站:

  http://www.oreilly.com

我们在 Facebook 的地址如下:http://facebook.com/oreilly

请关注我们的 Twitter 动态:http://twitter.com/oreillymedia

我们的 YouTube 视频地址如下:http://www.youtube.com/oreillymedia

致谢

感谢 AT&T 公司的所有人——我的老板、Ed(以及他的上司 Nadine),以及 AT&T 开发项目组的所有人(Ed S.、Jeana 和 Carolyn)。尤其要感谢 ARO 团队的成员:Jen、Bill、Lucinda、Tiffany Pete、Savitha、John 和 Rod(当然还有所有开发人员),他们每天都会和开发者社区分享自己的性能工具使用心得。感谢 AT&T 实验室以往和现在的所有同事:Feng、Shubho 和 Oliver。感谢你们带来了 ARO 团队的理念,并让我们参与到 App 性能的工作中。

非常感谢早期阅读本书的所有人,你们的评论、提示和建议是无价的。感谢我的技术审阅人和编辑,谢谢你们所有中肯的反馈和建议。你们使得本书更加出色。

最后,同时也是最重要的,我要感谢我的妻子和三个孩子。感谢你们在本书从最初的一个想法到最后成型的过程中,对我工作到深夜(以及次日早上脾气暴躁)的忍耐。没有你们,我不可能完成这项工作。我非常爱你们。1437313。

有意思的是,我是化学反应力学和动力学(研究反应的原理,以及如何使反应加速)博士。没想到,我的事业竟转变为研究移动 App 的机制、优化和动力学!

电子书

扫描如下二维码,即可购买本书电子版。

目录