描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121328879
内容简介
本书旨在为Android开发者指明提高应用程序性能的方向。第1章就什么是高性能,为什么需要高性能展开讨论。第2章为读者展示了一些用于调试应用程序的工具,方案以及技巧。第3-8章,围绕着布局,内存,多线程,网络,安全,电量消耗,等多个方面,阐述如何打造高性能应用程序。第9章相对独立,介绍的是原生开发。第10章与前面章节的关系也不大,涵盖了一些琐碎,但对性能至关重要的提示,例如,图像处理,序列化,优化APK文件等等。
目 录
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
Allocation Tracker 19
网络使用 20
Emulator Control 22
系统状态 23
调试UI 24
使用Hierarchy Viewer 26
Systrace 28
Android设备调试选项 29
Android即时运行 38
GPU分析器 39
使用GPU分析器进行调试 41
ClassyShark 42
开始使用 42
总结 46
3 打造布局 47
预览 47
渲染性能 47
屏幕撕裂和垂直同步 50
多窗口模式 57
最佳实践 63
布局概述 64
布局层次管理 64
布局复用 70
ViewStub 73
AdapterView和视图回收 74
自定义视图和布局 78
屏幕缩放 83
调试工具 84
Design窗口 85
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
内存设计模式 129
Android组件泄露 137
进程 150
内存API 151
主要组件和内存管理 153
调试工具 156
LogCat 156
ActivityManager API 159
StrictMode 160
Dumpsys 161
总结 168
5 多线程 169
预览 169
线程基础 170
Android多线程环境 174
Android应用程序线程 175
Android线程消息 176
最佳实践 179
线程 179
HandlerThread 179
AsyncTask 181
Loaders 185
Services 188
进程间通信 197
先进的技术 202
调试工具 210
StrictMode 210
总结 211
6 网络 213
预览 213
协议 215
方法 216
头部 216
超时 217
内容 217
响应码 218
连接类型 218
最佳实践 219
延迟测定 219
批量连接 221
对响应进行缓存 222
指数退避算法 226
轮询VS推送 228
所提供的API 229
Android N带来的新变化 234
调试工具 243
Android N网络ADB工具 244
Fiddler 244
Wireshark 245
Application Resource Optimizer 246
网络衰减 248
模拟网络加速和延迟 248
总结 252
7 安全 255
WhatsApp ?C 连续出现问题 256
深入代码 258
捕获APK文件 259
从设备上拉取APK文件 259
利用Wireshark捕获APK文件 260
利用外部网站 261
剖析APK文件 262
代码注入 267
操作码 270
注入新代码 270
签名并重新构建应用程序 273
保护应用程序 274
非安全存储 277
SharedPreferences 277
内部存储 278
外部存储 280
删除文件 282
使用外部存储还是内部存储 282
数据库 283
数据库中的性能 284
SQL注入 284
ORM框架 286
OrmLite 286
SugarORM 287
GreenDAO 288
Realm 289
网络 289
通信加密 290
嗅探 290
总结 292
8 优化电量消耗 295
分析 295
监测电池电量和充电状态 298
识别充电状态的变化 299
确定及响应电池电量的变化 300
Doze和App Standby 301
理解Doze 301
避免无用的网络请求 302
按需对待BroadcastReceivers 304
网络 305
总结 306
9 Android中的原生代码 309
入门——在系统中配置NDK 310
JNI 311
基本概念 312
创建首个JNI程序HelloWorld-JNI 313
使用Android NDK创建一个原生Activity 318
调试NDK 321
Android.mk 324
NDK定义的变量 325
TARGET_PLATFORM 325
TARGET_ARCH 325
TARGET_ABI 326
NDK提供的宏 326
Application.mk 327
引入已存在的库 329
导出头文件 330
总结 330
10 性能提示 333
位图 333
加载 334
处理 340
缓存 341
显示 346
管理内存 348
图像优化 352
分辨率 353
压缩 354
序列化 354
JSON的改进 354
JSON的替代品 356
本地序列化 363
代码改进 363
Getter和Setter 364
内部类 365
Android N中的Java 8 368
设置 368
特性 368
Jack工具链 372
APK优化 374
移除未使用的代码 374
移除未使用的资源 374
总结 376
为什么应用程序的性能意味着这么多? 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
Allocation Tracker 19
网络使用 20
Emulator Control 22
系统状态 23
调试UI 24
使用Hierarchy Viewer 26
Systrace 28
Android设备调试选项 29
Android即时运行 38
GPU分析器 39
使用GPU分析器进行调试 41
ClassyShark 42
开始使用 42
总结 46
3 打造布局 47
预览 47
渲染性能 47
屏幕撕裂和垂直同步 50
多窗口模式 57
最佳实践 63
布局概述 64
布局层次管理 64
布局复用 70
ViewStub 73
AdapterView和视图回收 74
自定义视图和布局 78
屏幕缩放 83
调试工具 84
Design窗口 85
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
内存设计模式 129
Android组件泄露 137
进程 150
内存API 151
主要组件和内存管理 153
调试工具 156
LogCat 156
ActivityManager API 159
StrictMode 160
Dumpsys 161
总结 168
5 多线程 169
预览 169
线程基础 170
Android多线程环境 174
Android应用程序线程 175
Android线程消息 176
最佳实践 179
线程 179
HandlerThread 179
AsyncTask 181
Loaders 185
Services 188
进程间通信 197
先进的技术 202
调试工具 210
StrictMode 210
总结 211
6 网络 213
预览 213
协议 215
方法 216
头部 216
超时 217
内容 217
响应码 218
连接类型 218
最佳实践 219
延迟测定 219
批量连接 221
对响应进行缓存 222
指数退避算法 226
轮询VS推送 228
所提供的API 229
Android N带来的新变化 234
调试工具 243
Android N网络ADB工具 244
Fiddler 244
Wireshark 245
Application Resource Optimizer 246
网络衰减 248
模拟网络加速和延迟 248
总结 252
7 安全 255
WhatsApp ?C 连续出现问题 256
深入代码 258
捕获APK文件 259
从设备上拉取APK文件 259
利用Wireshark捕获APK文件 260
利用外部网站 261
剖析APK文件 262
代码注入 267
操作码 270
注入新代码 270
签名并重新构建应用程序 273
保护应用程序 274
非安全存储 277
SharedPreferences 277
内部存储 278
外部存储 280
删除文件 282
使用外部存储还是内部存储 282
数据库 283
数据库中的性能 284
SQL注入 284
ORM框架 286
OrmLite 286
SugarORM 287
GreenDAO 288
Realm 289
网络 289
通信加密 290
嗅探 290
总结 292
8 优化电量消耗 295
分析 295
监测电池电量和充电状态 298
识别充电状态的变化 299
确定及响应电池电量的变化 300
Doze和App Standby 301
理解Doze 301
避免无用的网络请求 302
按需对待BroadcastReceivers 304
网络 305
总结 306
9 Android中的原生代码 309
入门——在系统中配置NDK 310
JNI 311
基本概念 312
创建首个JNI程序HelloWorld-JNI 313
使用Android NDK创建一个原生Activity 318
调试NDK 321
Android.mk 324
NDK定义的变量 325
TARGET_PLATFORM 325
TARGET_ARCH 325
TARGET_ABI 326
NDK提供的宏 326
Application.mk 327
引入已存在的库 329
导出头文件 330
总结 330
10 性能提示 333
位图 333
加载 334
处理 340
缓存 341
显示 346
管理内存 348
图像优化 352
分辨率 353
压缩 354
序列化 354
JSON的改进 354
JSON的替代品 356
本地序列化 363
代码改进 363
Getter和Setter 364
内部类 365
Android N中的Java 8 368
设置 368
特性 368
Jack工具链 372
APK优化 374
移除未使用的代码 374
移除未使用的资源 374
总结 376
评论
还没有评论。