第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
· · · · · · (
收起)