發表於2024-11-04
騰訊音樂Android開發總監撰寫,從事移動開發10餘年,曾主導並參於過多款用戶規模上億的Android應用的開發工作
以流暢、穩定、省電、省流量4個方嚮為目標,從UI、內存、存儲、穩定性、省電、安裝包大小6個維度深入剖析性能優化的技術和方案
本書旨在用騰訊的億級用戶App的開發經驗幫助你打造高質量的Android 應用。
從WinCE時代開始,作者從事移動應用開發10餘年,現擔任騰訊音樂Android平颱的開發總監,主導並參於過多個用戶規模上億的Android應用開發工作,對Android應用開發有深刻的認識,特彆在架構設計、性能優化等方麵有豐富的實戰經驗。
本書從用戶體驗的角度,將性能問題總結為4類:
(1)快:流暢的操作體驗
(2)穩:穩定
(3)省:省電、省流量
(4)小:安裝包要盡可能小
導緻齣現這4類問題的原因可能是卡頓、內存使用不閤理、代碼質量差、代碼邏輯不優秀、安裝包過大等。本書從繪製(UI)、內存、存儲、穩定性、耗電以及安裝包6個方麵深入講解瞭性能優化具體涉及的技術以及優化方案,同時講解瞭多種性能優化工具的使用。此外,還提供瞭典型的案例,幫助讀者理解Android的運行機製和原理,掌握Android性能優化的思路和有效方法。
羅彧成,騰訊音樂Android開發總監,從事移動應用開發工作10餘年,在Android、Linux、WinCE等平颱上有豐富的開發經驗。
對Android應用開發有深刻的認識,特彆在架構設計、性能優化等方麵有豐富的實戰經驗,主導並參於過多個用戶規模上億的Android應用開發工作。同時在車載網絡、傢庭網絡協議方麵也有豐富的開發經驗。
曾在多個有影響力技術峰會發錶過主題演講。
更好的性能是軟件開發人員長期不變的追求,在移動終端上尤其如此。本書是作者多年實際研發和優化經驗的沉澱。他總結和分享的這些寶貴經驗,能讓讀者少走許多彎路。
——張慶 騰訊音樂 技術總監
市麵上關於Android開發的書籍不少,本書另闢蹊徑,以性能優化為主綫講述Android開發的經驗與心得。書中匯聚瞭作者長期從事QQ音樂等大規模Android應用開發工作積纍的寶貴實戰經驗,推薦作為Android開發學習與思考的進階讀物。
——鬍鵬 土巴兔裝修網 技術總監
在同質化嚴重的移動應用市場,軟件性能已成為提高用戶留存率的關鍵問題。如何開發高性能的移動應用,此書做齣瞭精彩的闡述,技術知識的傳遞不隻有技術原理的講述,更多是通過大量實踐誘發讀者的思考,推薦閱讀。
——劉晨光 藍信工場科技有限公司技術總監
前 言
第1章 Android Studio使用指南 1
1.1 Android Studio的優勢 1
1.2 Android Studio使用入門 2
1.2.1 Android Studio安裝 2
1.2.2 創建一個Android Studio工程 3
1.2.3 從Eclipse項目遷移到Android Studio 5
1.3 Android Studio實用技巧 7
1.3.1 代碼管理 7
1.3.2 代碼編輯技巧 8
1.3.3 調試技巧 10
1.4 本章小結 11
第2章 繪製優化 12
2.1 Android係統顯示原理 13
2.1.1 繪製原理 13
2.1.2 刷新機製 16
2.1.3 卡頓的根本原因 20
2.2 性能分析工具 21
2.2.1 卡頓檢測工具 22
2.2.2 TraceView 23
2.2.3 Systrace UI性能分析 26
2.3 布局優化 29
2.3.1 常用布局優化工具 30
2.3.2 布局優化方法 34
2.4 避免過度繪製 43
2.4.1 過度繪製檢測工具 44
2.4.2 如何避免過度繪製 44
2.4.3 案例:無過度繪製View的實現 45
2.5 啓動優化 49
2.5.1 應用啓動流程 49
2.5.2 啓動耗時監測 52
2.5.3 啓動優化方案 56
2.6 閤理的刷新機製 58
2.6.1 減少刷新次數 58
2.6.2 避免後颱綫程影響 59
2.6.3 縮小刷新區域 59
2.7 提升動畫性能 60
2.7.1 幀動畫 60
2.7.2 補間動畫 60
2.7.3 屬性動畫 62
2.7.4 硬件加速 63
2.8 卡頓監控方案與實現 66
2.8.1 監控原理 67
2.8.2 代碼實現 68
2.9 本章小結 79
第3章 內存優化 80
3.1 Android內存管理機製 81
3.1.1 Java對象生命周期 81
3.1.2 內存分配 82
3.1.3 內存迴收機製 84
3.1.4 GC類型 86
3.2 優化內存的意義 87
3.3 內存分析工具 90
3.3.1 Memory Monitor 90
3.3.2 Heap Viewer 91
3.3.3 Allocation Tracker 94
3.4 避免內存泄漏 96
3.4.1 內存泄漏定義 97
3.4.2 使用MAT查找內存泄漏 97
3.4.3 常見內存泄漏場景 103
3.4.4 內存泄漏監控 106
3.5 優化內存空間 109
3.5.1 對象引用 109
3.5.2 減少不必要的內存開銷 110
3.5.3 使用最優的數據類型 112
3.5.4 圖片內存優化 117
3.6 圖片管理模塊設計與實現 120
3.6.1 實現異步加載功能 121
3.6.2 實現三重緩存 130
3.6.3 開源圖片組件 140
3.7 本章小結 142
第4章 存儲優化 144
4.1 存儲方式 144
4.1.1 SharedPreferences 145
4.1.2 文件存儲 145
4.1.3 SQLite(需要擴展) 146
4.1.4 ContentProvider 147
4.2 序列化 147
4.2.1 Serializable與Parcelable 148
4.2.2 Gson實現JSON的序列化和反序列化 148
4.2.3 Nano Proto Buffers 149
4.2.4 FlatBuffers 149
4.2.5 小結 150
4.3 SharedPreferences優化 150
4.4 數據庫使用及優化 151
4.4.1 數據庫實現 152
4.4.2 數據庫優化 157
4.5 本章小結 161
第5章 穩定性優化 162
5.1 提高代碼質量 162
5.1.1 代碼審查 163
5.1.2 代碼靜態掃描工具 166
5.2 Crash監控 168
5.2.1 Java層Crash監控 168
5.2.2 Native層Crash監控 171
5.2.3 Crash上報機製 173
5.3 ANR剖析 173
5.3.1 ANR介紹 173
5.3.2 ANR分析 174
5.3.3 ANR監控 176
5.4 提高後颱進程存活率 178
5.4.1 應用進程優先級 178
5.4.2 利用SyncAdapter提高進程優先級 180
5.5 本章小結 183
第6章 耗電優化 184
6.1 耗電檢測工具 184
6.2 三大模塊省電優化 187
6.2.1 顯示 187
6.2.2 網絡 188
6.2.3 CPU 189
6.3 應用常用優化方案 191
6.3.1 計算優化 191
6.3.2 避免WakeLock使用不當 192
6.3.3 使用Job Scheduler 193
6.4 Doze模式 197
6.4.1 Doze模式介紹 197
6.4.2 Doze模式應用策略 198
6.4.3 測試Doze模式應用工作狀態 199
6.5 本章小結 199
第7章 安裝包大小優化 200
7.1 應用裝包的構成 200
7.2 減少安裝包大小的常用方案 203
7.2.1 代碼混淆 203
7.2.2 資源優化 204
7.2.3 其他優化 206
7.3 本章小結 207
結束語 208
為什麼寫這本書一個好的應用,除瞭要有吸引人的功能和交互之外,在性能上也應該有高的要求,即使應用非常具有特色,或者功能和業務具有唯一性,在産品前期可能吸引瞭部分用戶,但用戶體驗不好的話,也會給産品帶來很差的口碑,如果有在體驗上更好的競品,用戶也會很快轉移。那麼一個好的應用應該如何定義呢?主要有三方麵:
業務/功能符閤邏輯的交互優秀的性能眾所周知,Android係統作為以移動設備為主的一款操作係統,硬件配置有一定的限製,雖然配置現在越來越高級,但仍然無法和PC相比,在CPU和內存上的使用不閤理或者耗費資源多時,就會碰到內存不足導緻的穩定性問題、CPU消耗太多導緻的卡頓問題等。例如,我們發布一款産品後會收到很多的反饋,這些反饋來自很多渠道,有用戶反饋,有應用發布平颱的反饋通道等。
麵對這些問題時,大傢想到的都是聯係用戶,然後看日誌,特彆是有關性能類問題的反饋,原因也非常難找,日誌大多用處不大,為什麼呢?因為性能問題大部分是非必現的問題,定位時很難復現,而又沒有關鍵的日誌,當然就無法找到原因瞭。這些問題非常影響用戶的體驗和功能的使用,所以解決這些問題是非常重要的。當前市場上講解性能優化的書太少,即使有些書講到,很多也是一筆帶過,沒有深入分析和尋找解決方案,所以有必要用一本書來從多個維度講解在性能上我們麵臨瞭什麼問題,如何解決這些問題,並在實際的項目中來優化我們的應用,以提高用戶體驗。
本書麵嚮的讀者本書適閤所有Android應用開發從業人員及在校學生,特彆是有一定Android應用開發經驗的開發人員,高級開發人員也可以通過本書瞭解更多的性能調優知識。
本書特色本書為進階類圖書,對於一些基礎技術和基礎理論知識不會做過多的闡述,特彆是入門類的知識點,大傢可以從其他書籍獲取相關的知識。書中以性能優化為核心,深入剖析性能優化具體涉及的技術背景與優化方案,同時提供典型案例,幫助讀者更深入地掌握Android應用開發技術,理解Android的運行機製和原理,掌握Android性能優化的思想,讓開發者快速成長,打造高質量的Android應用。
本書的主要內容可以把用戶能體驗到的性能問題主要總結為4個類彆:
流暢穩定省電省流量性能問題的主要原因是什麼,原因有相同的,也有不同的,但歸根結底,不外乎內存使用、代碼效率、閤適的策略邏輯、代碼質量這一類問題。本書講解內容的目標和方嚮如下圖所示。
從上圖可以看到,打造一個高質量的應用應該以4個方嚮為目標:快、穩、省、小。
快:使用時避免齣現卡頓,響應速度快,減少用戶的等待時間,滿足用戶預期。
穩:降低crash率和ANR率,不要在用戶使用過程中崩潰和無響應。
省:節省流量和耗電,減小用戶使用成本,避免使用時導緻手機發燙。
小:安裝包小可以降低用戶的安裝成本。
這4類問題需要從根源上解決,也就是要解決圖中第二個框裏的問題:卡頓、內存使用不閤理、代碼質量差、代碼邏輯不優秀、安裝包過大。這些問題也是在開發過程中碰到最多的問題,在實現業務需求的同時,也需要考慮到這些點,多花時間去思考,避免功能完成後再來做優化和修復Bug,這個時候帶來的成本會增加。如果是維護之前的代碼,就需要使用一係列工具來發現問題點。
性能優化不是更新一兩個版本可以解決的,是持續性的需求,結閤到實際中,在一個新産品/項目開始時,由於人力和上綫時間的限製,可以把優先級放低,但有些點是在寫代碼時就要考慮的,這就體現齣程序員的技術功底。
本書強調性能調優的核心思想和方嚮如下:
發現問題→分析問題原因及背景→尋找最優解決方案→解決問題。
本書一共7章,在簡單介紹瞭Android Studio的使用指南後,分彆從繪製(UI)、內存、存儲、穩定性、耗電以及安裝包6個方麵進行優化,從係統上深入分析繪製和內存的原理,一步步深入瞭解導緻性能問題的本質原因,同時講述瞭多種性能優化工具的使用,通過分析典型案例,得到有效的優化方案,從而實現更高質量的應用。書中所講述的內容均基於Android 6.0係統。
勘誤和資源下載由於寫作時間實在有限,在書稿交付時仍有些許不安,為此先為此書可能存在的錯誤或者描述不清楚的地方緻以真誠的歉意,如果你發現此書存在瑕疵或者有任何建議,請發郵件到5482586@qq.com,我會盡快迴復,非常期待大傢的反饋。
本書代碼的下載地址:https://github.com/lyc7898/AndroidTech。
緻謝由於時間的問題,本書寫作時間非常長,非常感謝楊福川編輯對我的鼓勵和寬容,並且分享瞭非常有用的碎片化寫作方法,使我一直堅持把本書寫完。同時感謝李藝編輯的校對和勘誤,纔完成瞭這本圖文並茂、格式清晰的技術書籍。
感謝我的妻子李萍女士對我的理解和支持,在我幾乎將所有的時間投入工作中時一直給予最大的寬容和鼓勵,使我每天即使再忙再纍時仍然可以迴到溫馨的傢。同時感謝我的父母和嶽父母,感謝他們對我無私的幫助,他們都是偉大的父母。
特彆感謝我的爺爺羅誌華老先生,在我的學習生涯中給予的無私幫助,在工作和生活上的諄諄教誨。還要感謝劉景瑜老師,在求學階段的鼓勵和教誨,告訴我有很多需要去做的事情。
最後感謝我現在工作的公司,在這裏我得到瞭最快的成長,學習到非常多的東西,感謝公司領導及所有同事,在這裏工作,能感受到大傢每天都在成長。
Android應用性能優化最佳實踐 下載 mobi pdf epub txt 電子書 格式 2024
Android應用性能優化最佳實踐 下載 mobi epub pdf 電子書適閤有一定Android開發經驗的同學。
評分此用戶未填寫評價內容
評分喜歡。不錯還可以
評分包裝很好,還沒看,應該還不錯。
評分正版書籍,紙質很好,快遞很快
評分很早之前想買的書,作為參考書不錯
評分還沒來得及看,給不瞭什麼實質的內容評價
評分喜歡。不錯還可以
評分送貨很快,質量也很好,總之很滿意。
Android應用性能優化最佳實踐 mobi epub pdf txt 電子書 格式下載 2024