前言
經(jīng)過我多日熬夜的結果孕豹,總算是把公司APP各大性能優(yōu)化了個遍棺蛛,總體效率提升了十倍不止。
Android性能優(yōu)化通常是“時間”與“空間”的互換與取舍
看起來很高大上巩步,其實際核心大體可歸納為如圖以下 6 類:
相信做Android的朋友對以上這些應該都不陌生,畢竟:
- 當你很努力地優(yōu)化了應用的性能后桦踊,用戶依然不斷抱怨應用卡頓椅野、啟動速度慢等問題。
- 當 Leader 直接給到你性能優(yōu)化的 KPI籍胯,內(nèi)存要降多少竟闪,包體積要減多少時,你倍感壓力杖狼,頭疼不已炼蛤。
- 面試時,面試官不斷追問你在開發(fā)中做了哪些優(yōu)化蝶涩?效果怎樣理朋?為什么要這樣做絮识?有沒更好的方案?難點在哪嗽上?
這些都是我們工作中常遇到的問題次舌,實際上,想要解決這些問題并不難兽愤,難的是我們沒有掌握合適的方法論和底層的優(yōu)化思維彼念。
該如何優(yōu)化
這里淺析一下內(nèi)存優(yōu)化和apk瘦身優(yōu)化技巧
內(nèi)存優(yōu)化技巧
優(yōu)化大方向:
- 內(nèi)存泄露
- 內(nèi)存抖動
- Bitmap
優(yōu)化細節(jié):
- LargeHeap屬性(雖然有點耍流氓,但還是應該向系統(tǒng)申請)
- onTrimMemory浅萧、onLowMemory(系統(tǒng)給的低內(nèi)存的回調逐沙,可以根據(jù)不同的回調等級去處理一些邏0輯)
- 使用優(yōu)化過的集合:SparseArray
- 謹慎使用SharedPreference(一次性load到內(nèi)存中)
- 謹慎使用外部庫(盡量選擇經(jīng)過大規(guī)模驗證的外部庫)
- 業(yè)務架構設計合理(加載的數(shù)據(jù)是你能用到的,不浪費內(nèi)存加載無用數(shù)據(jù))
包大小優(yōu)化
顧名思義就是減少apk包體積大小洼畅,apk大小主要取決于res下的資源文件吩案、.class文件,具體優(yōu)化措施有:
- 壓縮圖片大小土思,再在項目中使用务热。
- 在AndroidStudio內(nèi),可以將png等格式的圖片壓縮為.webp格式己儒,這可以進一步減少圖片大小崎岂。
- 盡可能地減少本地資源的使用,可從技術方案上考慮從服務端拉取圖片闪湾、lottie冲甘、so庫等資源。
- 利用lottie替換幀動畫的使用途样,減少幀動畫圖片資源的使用江醇。
- 利用混淆刪除無用代碼,減少dex文件大小何暇。
當然Android 性能優(yōu)化的主題比較多陶夜,這里就不一一給大家舉例說明了,想要了解更多的性能優(yōu)化實際運用方案裆站,我推薦這個各大廠的《Android性能優(yōu)化實戰(zhàn)演練》
不僅適合開發(fā)新人用來建立完備的知識體系条辟,還適合有一定開發(fā)經(jīng)驗的人員作為進階讀物,同時你也可以把它當作一個工具書宏胯,用于查找優(yōu)化方案羽嫡。
全一線互聯(lián)大廠性能優(yōu)化實戰(zhàn)
騰訊團隊:
- 騰訊Bugly:對字符串匹配算法的一點理解
- 全民k歌適配arm64-v8a方案
- 全民K歌內(nèi)存篇2——虛擬內(nèi)存淺析
- 全民K歌內(nèi)存篇1——線上監(jiān)控與綜合治理
- 騰訊 Bugly:動態(tài)下發(fā) so 庫在 Android APK 安裝包瘦身方面的應用
-
QQ音樂Android編譯提速之路
愛奇藝團隊
- 愛奇藝:安卓APP崩潰捕獲方案——xCrash
- Android篇 | 愛奇藝App啟動優(yōu)化實踐分享
-
二維碼掃描優(yōu)化及愛奇藝App的實踐
字節(jié)團隊
- 字節(jié)跳動:深入理解Gradle框架之一:Plugin, Extension, buildSrc
- 字節(jié)跳動:二維碼掃描優(yōu)化
- 頭條 | 深入理解gradle框架之二:依賴實現(xiàn)分析
- 頭條| 開源 | Scene:Android 開源頁面導航和組合框架
- 抖音BoostMultiDex優(yōu)化實踐:Android低版本上APP首次啟動時間減少80%
- 抖音BoostMultiDex優(yōu)化實踐:Android低版本上APP首次啟動時間減少80%(二)
- 抖音包大小優(yōu)化-資源優(yōu)化
- 今日頭條 ANR 優(yōu)化實踐系列 - 設計原理及影響因素
- 今日頭條 ANR 優(yōu)化實踐系列 - 監(jiān)控工具與分析思路
- 今日頭條 Android '秒' 級編譯速度優(yōu)化
-
抖音 Android 性能優(yōu)化系列:Java 內(nèi)存優(yōu)化篇
百度團隊
- 百度APP技術:Android H5首屏優(yōu)化實踐
- 百度App組件化之路
-
百度App網(wǎng)絡深度優(yōu)化系列《三》弱網(wǎng)優(yōu)化
阿里團隊
- 支付寶客戶端架構解析:Android 客戶端啟動速度優(yōu)化之「垃圾回收」
- 支付寶 App 構建優(yōu)化解析:通過安裝包重排布優(yōu)化 Android 端啟動性能
- 支付寶 App 構建優(yōu)化解析:Android 包大小極致壓縮
- 閑魚如何在2個月內(nèi)實現(xiàn)Android啟動速度翻倍的?
-
解決支付寶包體積優(yōu)化的遺留問題:運行時獲取dexpc
攜程
- 攜程:從智行 Android 項目看組件化架構實踐
-
攜程Android 10適配踩坑指南
網(wǎng)易
- 網(wǎng)易傳媒技術團隊:AOP技術在客戶端的應用與實踐
- 網(wǎng)易大數(shù)據(jù)|互聯(lián)網(wǎng)產(chǎn)品決策秘笈: AB測試
- 網(wǎng)易新聞構建優(yōu)化:如何讓你的構建速度“勢如閃電”肩袍?
-
網(wǎng)易新聞客戶端 H5 秒開優(yōu)化