零、前言

高性能应用是移动世界成功的关键驱动因素之一。如果应用运行缓慢,用户可能会放弃它。学习如何构建在速度和性能与功能和 UX 之间取得平衡的应用可能是一项挑战;然而,现在比以往任何时候都更重要的是要保持平衡。

安卓高性能编程会让你思考如何从安装了你的应用的任何硬件中获得最大收益,这样你就可以增加你的影响力和参与度。这本书首先介绍了最先进的安卓技术,以及安卓应用中性能的重要性。然后,我们将解释经常用于调试和配置安卓应用的安卓软件开发工具包工具。我们还将学习一些高级主题,如建筑布局、多线程、网络和安全性。电池寿命是应用中最大的瓶颈之一;这本书将展示耗尽电池寿命的典型代码示例,如何防止这种情况,以及如何在各种情况下从应用中测量电池消耗。

这本书解释了构建优化和高效系统的技术,这些系统不会耗尽电池、导致内存泄漏或随时间变慢。

这本书涵盖了什么

第一章简介:为什么是高性能?,介绍了该主题、安卓的当前技术水平以及安卓应用中性能的重要性。

第二章高效调试,涵盖了安卓 SDK(以及一些外部)提供的工具,这些工具通常用于调试和分析安卓应用。

第 3 章建筑布局,将带您了解优化安卓例程、编写高效使用内存的应用、解释从内存分配到垃圾收集的概念所使用的技术。

第 4 章内存为 UI 设计提供了许多需要学习的见解,以便创建一个高效的 UI,快速加载,不给用户一个滞后的感觉,并得到有效更新。

第 5 章多线程,解释了安卓应用中所有不同的线程选项,以及我们应该何时应用每个选项。一些先进的技术,比如 IPC,也会用实用的代码展示出来。

第 6 章联网展示了用于执行高效网络操作的技术,以及从服务器检索数据的技术,例如指数级回退或避免轮询。

第 7 章安全涵盖了保护安卓应用的技术,如何利用安卓原生提供的安全加密机制,以及如何获取连接信息或仅获得连接更改通知。

第 8 章优化电池消耗,提供了耗尽电池寿命的典型代码示例,如何防止,以及如何从应用中测量各种情况下的电池消耗;许多开发人员不知道如何开发应用来拍摄照片或视频、处理预览和保存数据。

第九章Android 中的原生编码,这一章是 Android 中的原生代码和 C++世界及其用法的一个变通。

第 10 章性能提示,帮助开发者在常见的编码情况下得到指导,错误的选择会影响应用效率;这将是与前几章没有涉及的主题相关的最佳实践指南。

这本书你需要什么

这本书需要以下硬件:

  • 运行 Windows、Linux 或 Mac OS X 的电脑/笔记本电脑
  • 安卓手机。推荐高端机型,至少安装安卓 5.0。

这本书是给谁的

本主题面向具有安卓高级知识的开发人员,他们希望推送自己的知识并学习技术来提高应用的性能。我们假设他们对使用整个安卓软件开发工具包感到满意,并且已经这样做了很多年。他们还熟悉使用本机代码的框架,如 NDK,这对于性能至关重要。

惯例

在这本书里,你会发现许多区分不同种类信息的文本样式。以下是这些风格的一些例子和对它们的意义的解释。

文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“如果您转到此文件夹并调用命令adb,您将在屏幕上看到可用选项的列表。”

代码块设置如下:

<resources>
    <style name="Theme.NoBackground" parent="android:Theme">
      <item name="android:windowBackground">@null</item>
    </style>
</resources>

任何命令行输入或输出都编写如下:

adb shell dumbsys gfxinfo <PACKAGE_NAME>

新名词重要词语以粗体显示。你在屏幕上看到的单词,例如,在菜单或对话框中,出现在这样的文本中:“为了调试设备上的透支,安卓提供了一个有用的工具,可以在开发者选项中启用。”

警告或重要提示会出现在这样的框中。

类型

提示和技巧是这样出现的。

读者反馈

我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。

要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>,并在您的邮件主题中提及书名。

如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。

客户支持

现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。

下载示例代码

你可以从你在http://www.packtpub.com的账户下载这本书的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。

您可以按照以下步骤下载代码文件:

  1. 使用您的电子邮件地址和密码登录或注册我们的网站。
  2. 将鼠标指针悬停在顶部的 SUPPORT 选项卡上。
  3. 点击代码下载&勘误表
  4. 搜索框中输入图书名称。
  5. 选择要下载代码文件的书籍。
  6. 从您购买这本书的下拉菜单中选择。
  7. 点击代码下载

您也可以通过点击 Packt 出版网站图书网页上的代码文件按钮来下载代码文件。可以通过在搜索框中输入图书名称来访问该页面。请注意,您需要登录您的 Packt 帐户。

下载文件后,请确保使用最新版本的解压缩文件夹:

  • 视窗系统的 WinRAR / 7-Zip
  • zipeg/izp/un ARX for MAC
  • 适用于 Linux 的 7-Zip / PeaZip

这本书的代码包也托管在 GitHubhttps://GitHub . com/PacktPublishing/Android-高性能-编程。我们还有来自丰富的图书和视频目录的其他代码包,可在https://github.com/PacktPublishing/获得。看看他们!

下载本书的彩色图片

我们还为您提供了一个 PDF 文件,其中包含本书中使用的截图/图表的彩色图像。彩色图像将帮助您更好地理解输出中的变化。您可以从http://www . packtpub . com/sites/default/files/downloads/androidhighlperformance programming _ color images . pdf下载此文件。

勘误表

尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表提交表链接,并输入您的勘误表的详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。

要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。

盗版

互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。

请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>联系我们,获取疑似盗版资料的链接。

我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。

问题

如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>联系我们,我们将尽最大努力解决问题。