譯者序 xi
序 xiii
前言 xv
第1章 Android 的性能指標 1
1.1 性能對用戶很重要 2
1.1.1 電子商務和性能 2
1.1.2 電子商務之外的影響 3
1.1.3 性能可以節省基礎設備 4
1.2 最惡劣的性能影響因素:宕機 4
1.2.1 低性能就像持續的宕機 5
1.2.2 消費者對性能bug 的態度 7
1.2.3 智能手機電池壽命:礦井中的金絲雀 8
1.3 App 性能問題的檢測 8
1.3.1 模擬測試 9
1.3.2 真實用戶監測 9
1.4 總結 9
第2章 構建Android 設備實驗室 10
2.1 你的用戶都在使用什麼設備 11
2.2 設備特性分布 11
2.2.1 屏幕 11
2.2.2 SDK 版本 12
2.2.3 CPU/ 內存和存儲 12
2.3 用戶使用的網絡 12
2.4 你的設備不是用戶的設備 12
2.5 測試 13
2.6 創建設備實驗室 14
2.6.1 你想要花很多錢買設備嗎 14
2.6.2 我應該購買什麼樣的設備 15
2.6.3 除瞭手機之外 17
2.6.4 Android Open Source Project 設備 17
2.6.5 其他選擇 18
2.6.6 其他注意事項 19
2.6.7 我的設備實驗室 20
2.7 總結 20
第3章 硬件性能和電池壽命 22
3.1 Android 的硬件特點 22
3.2 少即是多 23
3.3 耗電原因 24
3.3.1 Android 能耗統計文件 24
3.3.2 屏幕 26
3.3.3 無綫設備 27
3.3.4 CPU 27
3.3.5 其他傳感器 28
3.3.6 休眠 29
3.3.7 WakeLock 和Alarm 29
3.3.8 Doze 模式 30
3.4 基本的電量消耗分析 31
3.4.1 詳細的App 電量消耗分析 34
3.4.2 能耗數據和數據流量 36
3.4.3 App 休眠 38
3.5 高級電池監控 38
3.5.1 電能統計 38
3.5.2 Battery Historian 42
3.5.3 Battery Historian 2.0 51
3.6 JobScheduler 54
3.7 小結 58
第4章 屏幕和UI 性能 59
4.1 UI 性能基準 59
4.2 Android 上的UI 和渲染性能改進 60
4.3 創建視圖 61
4.4 資源縮減 74
4.4.1 屏幕的過度繪製 74
4.4.2 檢測過度繪製 74
4.4.3 Hierarchy Viewer 中的過度繪製 77
4.4.4 過度繪製和KitKat(Overdraw Avoidance) 78
4.5 分析卡頓(測量GPU 的渲染性能) 79
4.6 丟幀 83
4.6.1 Systrace 84
4.6.2 Systrace Screen Painting 86
4.6.3 Systrace 和CPU 阻塞渲染 91
4.6.4 Systrace 更新——2015 年Google I/O 開發者大會 93
4.6.5 第三方工具 95
4.7 感知性能 95
4.7.1 進度條:優缺點 96
4.7.2 動畫掩蓋加載時間 96
4.7.3 即時更新的善意謊言 96
4.7.4 提高感知性能的建議 97
4.8 小結 97
第5章 內存性能 98
5.1 Android 內存:它是如何工作的 98
5.1.1 共享內存與私有內存 98
5.1.2 髒內存與乾淨內存 99
5.1.3 內存清理(垃圾迴收) 99
5.1.4 確定App 使用的內存大小 102
5.1.5 procstats 107
5.1.6 Android 內存警告 111
5.2 Java 中的內存管理/ 泄露 112
5.3 追蹤內存泄露的工具 112
5.3.1 Heap Dump 113
5.3.2 Allocation Tracker 115
5.3.3 增加一處內存泄露 116
5.3.4 更加深層次的堆解析:MAT 和LeakCanary 119
5.3.5 Eclipse 內存分析工具——MAT 119
5.3.6 LeakCanary 125
5.4 小結 128
第6章 CPU 與CPU 性能 129
6.1 檢測CPU 占用率 130
6.2 使用Systrace 分析CPU 131
6.3 Traceview(遺留的監視器DDMS 工具) 134
6.4 Traceview(Android Studio) 137
6.5 其他優化工具 140
6.6 小結 141
第7章 網絡性能 142
7.1 Wi-Fi 與蜂窩無綫電 142
7.1.1 Wi-Fi 143
7.1.2 蜂窩 143
7.1.3 RRC 狀態機 144
7.2 測試工具 147
7.2.1 Wireshark 148
7.2.2 Fiddler 149
7.2.3 MITMProxy 150
7.2.4 AT&T ARO 151
7.2.5 混閤型App 和WebPageTest org 154
7.3 Android 網絡優化 154
7.3.1 文件優化 155
7.3.2 精簡文本文件(Souders:精簡JavaScript) 156
7.3.3 圖片 157
7.3.4 文件緩存 159
7.3.5 文件之外 161
7.3.6 分組連接 162
7.3.7 檢測應用的無綫電使用情況 163
7.3.8 適時關閉連接 164
7.3.9 定期執行重復的ping 命令 166
7.3.10 網絡安全技術的應用(HTTP 和HTTPS) 167
7.4 全球移動網絡覆蓋範圍 167
7.4.1 CDN 服務器 168
7.4.2 在慢速網絡中測試App 169
7.4.3 仿真慢速網絡而不用傾傢蕩産 169
7.4.4 構建網絡感知App 170
7.4.5 計算延遲 173
7.4.6 最後一英裏的延遲 174
7.4.7 其他無綫電 174
7.4.8 GPS 174
7.4.9 藍牙 174
7.5 小結 176
第8章 真實用戶監測 177
8.1 啓用RUM 工具 178
8.2 RUM 分析:示例程序 178
8.3 崩潰 179
8.3.1 分析Crashlytics 的崩潰報告 181
8.3.2 使用 186
8.3.3 實時信息 190
8.4 大數據的營救 190
8.5 小結 192
附錄 組織性能 193
關於作者 198
封麵介紹 198
· · · · · · (
收起)