第1 章 引言:为什么需要高性能 .................................................................. 1
为什么应用程序的性能意味着这么多 ....................................................................... 2
手动测试和自动测试 ................................................................................................... 3
ANR 和软件中的延迟 ................................................................................................. 3
什么会触发ANR,我该如何避免它们 .............................................................. 4
Android 架构 ................................................................................................................ 4
Dalvik 虚拟机 ............................................................................................................... 5
内存管理 ....................................................................................................................... 5
电量消耗 ....................................................................................................................... 6
Java 语言 ....................................................................................................................... 7
NDK/在需要时进行原生开发 ..................................................................................... 7
程序响应相关的3 个临界值 ....................................................................................... 8
软件质量的商业价值 ................................................................................................... 8
总结 ............................................................................................................................... 9
第2 章 高效调试 ......................................................................................... 11
ADB ............................................................................................................................ 11
DDMS ......................................................................................................................... 12
采集和分析线程信息 ................................................................................................. 14
堆分析和可视化 ......................................................................................................... 16
Android 高性能编程
Allocation Tracker ....................................................................................................... 19
网络使用 ..................................................................................................................... 20
Emulator Control ......................................................................................................... 22
系统状态 ..................................................................................................................... 23
调试UI ....................................................................................................................... 23
使用Hierarchy Viewer ............................................................................................... 25
Systrace ....................................................................................................................... 27
Android 设备调试选项 .............................................................................................. 29
Android 即时运行 ...................................................................................................... 38
GPU 分析器 ................................................................................................................ 40
使用GPU 分析器进行调试 ....................................................................................... 41
ClassyShark ................................................................................................................. 42
开始使用 ..................................................................................................................... 43
总结 ............................................................................................................................. 46
第3 章 打造布局 ......................................................................................... 47
预览 ............................................................................................................................. 47
渲染性能 ............................................................................................................. 47
屏幕撕裂和垂直同步 ......................................................................................... 50
多窗口模式 ......................................................................................................... 57
最佳实践 ..................................................................................................................... 63
布局概述 ............................................................................................................. 64
布局层级管理 ..................................................................................................... 64
布局复用 ............................................................................................................. 70
ViewStub ............................................................................................................. 73
AdapterView 和视图回收 ................................................................................... 74
自定义视图和布局 ............................................................................................. 78
屏幕缩放 ............................................................................................................. 83
调试工具 ..................................................................................................................... 84
Design 窗口 ........................................................................................................ 84
Hierarchy Viewer ................................................................................................ 86
设备上的调试工具 ............................................................................................. 90
Systrace ............................................................................................................... 97
总结 ........................................................................................................................... 101
第4 章 内存 .............................................................................................. 103
预览 ........................................................................................................................... 103
内存如何工作 ................................................................................................... 104
垃圾回收 ........................................................................................................... 104
内存共享 ........................................................................................................... 104
运行时 ............................................................................................................... 105
Android N 即时编译器 .................................................................................... 106
内存泄露 ........................................................................................................... 107
内存抖动 ........................................................................................................... 108
引用 ................................................................................................................... 108
内存相关的项目 ............................................................................................... 109
最佳实践 ................................................................................................................... 111
数据类型 ........................................................................................................... 111
语法 ................................................................................................................... 117
常量 ................................................................................................................... 123
对象管理 ........................................................................................................... 124
内存设计模式 ................................................................................................... 128
Android 组件泄露 ............................................................................................ 137
进程 ................................................................................................................... 150
内存API ........................................................................................................... 151
主要组件和内存管理 ....................................................................................... 154
调试工具 ................................................................................................................... 156
LogCat ............................................................................................................... 157
ActivityManager API ........................................................................................ 159
StrictMode ......................................................................................................... 160
Dumpsys ............................................................................................................ 162
总结 ........................................................................................................................... 168
第5 章 多线程 .......................................................................................... 171
预览 ........................................................................................................................... 171
线程基础 ........................................................................................................... 172
Android 多线程环境 ........................................................................................ 176
Android 应用程序线程 .................................................................................... 177
Android 线程消息 ............................................................................................ 178
最佳实践 ................................................................................................................... 181
线程 ................................................................................................................... 181
HandlerThread ................................................................................................... 181
AsyncTask ......................................................................................................... 183
Loader ............................................................................................................... 187
Service ............................................................................................................... 190
进程间通信 ....................................................................................................... 199
先进的技术 ....................................................................................................... 205
调试工具 ................................................................................................................... 212
StrictMode ......................................................................................................... 212
总结 ........................................................................................................................... 213
第6 章 网络 .............................................................................................. 215
预览 ........................................................................................................................... 215
协议 ................................................................................................................... 217
方法 ................................................................................................................... 218
头部 ................................................................................................................... 218
超时 ................................................................................................................... 219
内容 ................................................................................................................... 219
响应码 ............................................................................................................... 220
连接类型 ........................................................................................................... 220
最佳实践 ................................................................................................................... 221
延迟测定 ........................................................................................................... 221
批量连接 ........................................................................................................... 223
对响应进行缓存 ............................................................................................... 224
指数退避算法 ................................................................................................... 228
轮询VS 推送 .................................................................................................... 230
所提供的API ................................................................................................... 231
Android N 带来的新变化 ................................................................................. 236
调试工具 ................................................................................................................... 245
Android N 网络ADB 工具 .............................................................................. 245
Fiddler ............................................................................................................... 246
Wireshark .......................................................................................................... 247
Application Resource Optimizer ....................................................................... 248
网络衰减 ........................................................................................................... 250
模拟网络加速和延迟 ....................................................................................... 250
总结 ........................................................................................................................... 254
第7 章 安全 .............................................................................................. 257
WhatsApp – 连续出现问题 ..................................................................................... 258
深入代码 ................................................................................................................... 260
捕获APK 文件 ......................................................................................................... 261
从设备上拉取APK 文件 ................................................................................. 261
利用Wireshark 捕获APK 文件 ...................................................................... 262
利用外部网站 ................................................................................................... 263
剖析APK 文件 ......................................................................................................... 264
代码注入 ................................................................................................................... 269
操作码 ............................................................................................................... 272
注入新代码 ....................................................................................................... 272
签名并重新构建应用程序 ............................................................................... 275
保护应用程序 ................................................................................................... 276
非安全存储 ............................................................................................................... 279
SharedPreferences ............................................................................................. 279
内部存储 ........................................................................................................... 280
外部存储 ........................................................................................................... 282
删除文件 ........................................................................................................... 284
使用外部存储还是内部存储 ........................................................................... 284
数据库 ............................................................................................................... 285
数据库中的性能 ............................................................................................... 286
SQL 注入 .......................................................................................................... 286
ORM 框架 ......................................................................................................... 288
OrmLite ............................................................................................................. 288
SugarORM ........................................................................................................ 289
GreenDAO ........................................................................................................ 290
Realm ................................................................................................................ 291
网络 ................................................................................................................... 291
通信加密 ................................................................................................................... 292
嗅探 ................................................................................................................... 292
总结 ........................................................................................................................... 294
第8 章 优化电量消耗 ................................................................................ 297
分析 ........................................................................................................................... 297
监测电池电量和充电状态 ............................................................................... 300
识别充电状态的变化 ....................................................................................... 301
确定及响应电池电量的变化 ........................................................................... 302
Doze 和App Standby ............................................................................................... 303
理解Doze ......................................................................................................... 303
避免无用的网络请求 ............................................................................................... 304
按需对待BroadcastReceiver .................................................................................... 306
网络 ........................................................................................................................... 307
总结 ........................................................................................................................... 309
第9 章 Android 中的原生代码................................................................... 311
入门——在我们的系统中配置NDK ..................................................................... 312
JNI ............................................................................................................................. 313
基本概念 ................................................................................................................... 314
创建首个JNI 程序HelloWorld-JNI ........................................................................ 315
使用Android NDK 创建一个原生Activity ............................................................ 320
调试NDK ................................................................................................................. 323
Android.mk ............................................................................................................... 326
NDK 定义的变量 ..................................................................................................... 327
TARGET_PLATFORM .................................................................................... 327
TARGET_ARCH .............................................................................................. 327
TARGET_ABI .................................................................................................. 328
NDK 提供的宏 ......................................................................................................... 328
Application.mk .......................................................................................................... 329
引入已存在的库 ....................................................................................................... 331
导出头文件 ............................................................................................................... 332
总结 ........................................................................................................................... 333
第10 章 提高性能的小技巧 ....................................................................... 335
位图 ........................................................................................................................... 335
加载 ................................................................................................................... 336
处理 ................................................................................................................... 342
缓存 ................................................................................................................... 343
显示 ................................................................................................................... 348
管理内存 ........................................................................................................... 350
图像优化 ................................................................................................................... 354
分辨率 ............................................................................................................... 355
压缩 ................................................................................................................... 356
序列化 ....................................................................................................................... 356
JSON 的改进 .................................................................................................... 356
JSON 的替代品 ................................................................................................ 358
本地序列化 ....................................................................................................... 365
代码改进 ................................................................................................................... 365
Getter 和Setter ................................................................................................. 366
内部类 ............................................................................................................... 367
Android N 中的Java 8 ............................................................................................. 370
设置 ................................................................................................................... 370
Jack 工具链 ....................................................................................................... 374
APK 优化 .................................................................................................................. 375
移除未使用的代码 ........................................................................................... 376
移除未使用的资源 ........................................................................................... 376
总结 ........................................................................................................................... 378
· · · · · · (
收起)