打造流暢的Android App
內容描述
本書以Android App性能優化為切入點,深入淺出地介紹性能優化的重要性和提升Android產品性能的方法與技巧。全書共分8章,主要內容包括:第1章介紹性能優化的重要性及開發環境的優化;第2章介紹3種靜態代碼檢查工具的使用及技巧;第3章介紹Android Profiler的使用,通過對App運行時狀態的跟蹤揪出性能問題的“元凶”;第4~8章將性能優化融入整個開發流程中,做到“未雨綢繆”,這部分內容同樣適用於對已有產品進行性能優化的參考。此外,本書針對各個優化主題都列舉了進行性能優化的一般步驟及典型案例,以幫助讀者快速提升實戰技能。
本書適合所有Android開發人員使用,通過閱讀本書讀者能夠建立敏銳的“嗅覺”,開發出高性能的Android產品,同時,可以通過合理的重構和代碼優化改進現有的App產品。
目錄大綱
目 錄
第1章 概述 1
1.1 為什麽要做性能優化 1
1.1.1 性能優化的目的 1
1.1.2 App出現性能瓶頸的症狀 2
1.1.3 提升App性能的步驟 3
1.2 配置高效的開發環境 4
1.2.1 Android Studio輕裝上陣 4
1.2.2 Android Studio內存優化 7
1.2.3 加速Android SDK下載/更新 8
1.2.4 加速依賴庫下載 9
1.2.5 加速Gradle編譯速度 10
第2章 靜態代碼審查 13
2.1 概述 13
2.1.1 靜態代碼審查的意義 13
2.1.2 安裝靜態代碼審查工具 14
2.2 使用Android Lint進行代碼審查 21
2.2.1 Android Lint概述及基本概念 21
2.2.2 運行Lint檢查 22
2.2.3 自定義Lint檢查範圍 24
2.2.4 自定義Lint檢查類型 27
2.3 使用CheckStyle進行代碼審查 32
2.3.1 運行CheckStyle 32
2.3.2 自定義CheckStyle檢查規則 40
2.4 使用SpotBugs進行代碼審查 45
2.4.1 運行SpotBugs 46
2.4.2 SpotBugs分析能力 49
2.4.3 SpotBugs高級參數設置 50
2.4.4 自定義SpotBugs過濾器 52
2.5 使用PMD進行代碼審查 59
2.5.1 運行PMD 59
2.5.2 PMD分析能力 62
2.5.3 自定義PMD過濾器 63
2.6 靜態代碼審查最佳實踐 68
2.6.1 取其精華,合理運用 68
2.6.2 優化代碼掃描過程 70
第3章 使用Android Profiler優化性能 73
3.1 Android Profiler初探 74
3.1.1 創建測試工程 74
3.1.2 Android Profiler視圖簡介 75
3.1.3 啟動高級分析 76
3.1.4 Android Profiler監控的開始和停止 77
3.1.5 Android Profiler記錄的保存和讀取 78
3.2 使用CPU Profiler分析CPU使用情況 79
3.2.1 CPU Profiler支持記錄的信息類型 79
3.2.2 認識和使用CPU Profiler圖表 80
3.2.3 使用CPU Profiler破解掉幀難題 84
3.3 使用Memory Profiler分析內存使用情況 89
3.3.1 為什麽要做內存優化分析 89
3.3.2 認識Memory Profiler 90
3.3.3 啟動內存跟蹤 91
3.3.4 使用Memory Profiler破解內存泄漏難題 93
3.3.5 更高效地使用Memory Profiler 95
3.4 使用Network Profiler分析網絡流量 96
3.4.1 認識Network Profiler圖表 96
3.4.2 借助Network Profiler優化網絡操作 98
3.4.3 借助Network Profiler解決網絡疑難 99
3.4.4 使用Network Profiler的註意事項 100
3.5 使用Energy Profiler分析電量使用情況 100
3.5.1 電池用量跟蹤與其他類型跟蹤的關系 100
3.5.2 認識和使用Energy Profiler耗電圖表 101
3.5.3 正確理解Energy Profiler耗電圖表的原則 104
第4章 高質量的App從架構開始 105
4.1 還原移動設備真實使用場景 105
4.1.1 硬件環境 106
4.1.2 軟件環境 107
4.1.3 充分考慮人的因素 108
4.2 架構設計原則 108
4.2.1 原則一:分離關註點 108
4.2.2 原則二:使用模型驅動界面 109
4.3 軟件設計架構之MVC 109
4.3.1 MVC的概念 109
4.3.2 實戰演練 110
4.3.3 MVC模式的優劣 115
4.4 軟件設計架構之MVP 116
4.4.1 MVP的概念 116
4.4.2 實戰演練 117
4.4.3 MVP模式的優劣 121
4.4.4 巧妙彌補MVP架構的缺陷 121
4.5 軟件設計架構之MVVM 122
4.5.1 MVVM的概念 122
4.5.2 實戰演練 123
4.5.3 MVVM模式的優劣 129
4.6 總結 129
第5章 優雅地保活App 130
5.1 Android App保活之殤 130
5.1.1 Android推送服務的歷史現狀分析 131
5.1.2 傳統的App保活方法 131
5.2 探索App保活黑科技 132
5.2.1 添加電池優化白名單 132
5.2.2 白名單內的App為何會被殺 139
5.2.3 重新設計推送服務 144
第6章 網絡性能優化專題 147
6.1 網絡交互與多線程 147
6.1.1 從AsyncTask談起 148
6.1.2 正確使用AsyncTask 152
6.2 海量數據傳輸優化 156
6.2.1 使用GZIP壓縮 156
6.2.2 數據增量更新技術 159
6.2.3 圖片文件傳輸效率優化 162
第7章 優化APK體積 164
7.1 APK內部結構一瞥 164
7.2 多渠道打包 167
7.2.1 多渠道打包原理 167
7.2.2 實例解析 170
7.3 優化資源文件 173
7.3.1 圖片格式的選擇 173
7.3.2 合理使用矢量圖 176
7.3.3 資源文件後加載技術 178
7.3.4 清理未使用的資源文件 179
7.4 使用代碼混淆 179
7.4.1 R8編譯器的優化原理 180
7.4.2 啟用代碼混淆 180
7.4.3 添加混淆例外項的兩種方式 181
第8章 App耗電及Crash體驗優化 183
8.1 電量優化原則 183
8.2 Android系統的耗電策略及應對方案 184
8.2.1 系統本身的策略及應對方案 184
8.2.2 使用adb模擬設備狀態 188
8.3 App Crash體驗優化 188