新聞中心
一般情況下,我們談性能優(yōu)化基本上會從以下幾個方面:

- App啟動速度優(yōu)化
- UI流暢度優(yōu)化
- 內(nèi)存優(yōu)化
- apk瘦身
- 電量優(yōu)化
還有些網(wǎng)絡(luò)速度優(yōu)化、以及特定類型app的一些針對性的優(yōu)化,比如播放器起播速度等...。
本篇文章我們重點談?wù)撋厦?個方面。
性能優(yōu)化正常的流程是,發(fā)現(xiàn)自己某方面與競品差距比較大,比如UI渲染速度,需要通過某種方式去發(fā)現(xiàn)為什么比別人慢,往往需要利用一些工具,然后可以做一些針對性的調(diào)優(yōu)(代碼優(yōu)化、實現(xiàn)方式改變等),當(dāng)然了在調(diào)優(yōu)的過程中會有一些通用性的調(diào)優(yōu)方式可以幫助你。
所以本文從共性的角度來看,主要介紹的就是針對以上5個方面的檢測工具以及調(diào)優(yōu)方式了。
1. App啟動速度優(yōu)化
對于App啟動速度優(yōu)化,一般情況下我們會利用主題去防止出現(xiàn)白屏;針對啟動速度慢,需要盡可能減少Application的onCreate中所要做的事情,比如一些不重要的SDK延遲或者異步加載;多進(jìn)程情況下一定要可以在onCreate中去區(qū)分進(jìn)程做一些初始化工作;部分將要使用到的類異步加載;還有針對multidex專門做優(yōu)化的(當(dāng)然這個隨著5.0以上的設(shè)備越來越多,影響倒是沒有那么大了)。
當(dāng)然了,在檢測啟動優(yōu)化上,除了利用adb命令去檢測總時間,還有就是去發(fā)現(xiàn)耗時的方法,可以利用TraceView,或者打開StrictMode,如果你喜歡使用Log,還可以去使用hugo,或者自己寫一個類似的AOP日志框架。
StrictMode比較簡單,就不描述了,hugo是Jake大神的一個開源庫,主要是利用aspectJ,源碼很少,也比較簡單,不過使用起來還不錯,直接看readme就夠了。
2. UI流暢度優(yōu)化
談到UI流暢度,一般就是不要在主進(jìn)程去做耗時的操作,提升UI的繪制速度(減少View的布局層級,避免過渡繪制等)...TraceView、Lint、Hugo、StrictMode等...
當(dāng)然了對于UI卡頓,不可避免的要引入檢測的方案:一般有監(jiān)聽Looper的日志。
3. 內(nèi)存優(yōu)化
內(nèi)存優(yōu)化那么主要就是去消除應(yīng)用中的內(nèi)存泄露、避免內(nèi)存抖動;常用工具就是AS自帶的內(nèi)存檢測,可以很好的發(fā)現(xiàn)內(nèi)存抖動;leakcanary可以非常方便的幫助我們發(fā)現(xiàn)內(nèi)存泄露;MAT可以做更多的內(nèi)存分析。
4. apk瘦身
關(guān)于Apk瘦身,主要由以下幾個方式:
- 利用ProGuard壓縮代碼去除無用資源
- andresguard進(jìn)一步壓縮與混淆資源
- 第三方開源庫的瘦身,僅保留自己需要的部分
- ***的圖片壓縮與webp的使用
- 合理配置去除不必要的配置,僅保留中文配置等...
- so的優(yōu)化與配置,只保留一類so
- 動態(tài)下發(fā)一些資源:字庫、so、換膚包等;
以上僅有7比較麻煩,需要服務(wù)端的配合,此外對于動態(tài)下發(fā)So,可以參考tinker對So熱修復(fù)部分代碼。
5. 電量優(yōu)化
電量優(yōu)化說實在的關(guān)注度較低,一般情況就是合理的使用一些傳感器、謹(jǐn)慎的使用Wake Lock、減少后臺的不要的操作等...檢測可以利用battery-historian
好了,大家可以將每個方案的所采用的實際的優(yōu)化策略記錄下來,對每種方式提到的工具一定要自己去體驗,用起來肯定不會有多么的困難,實操起來印象會更加深刻。
性能優(yōu)化并不困難,重要的還是要去實際的去操作一把,基本上也是面試常見的問題了。
***,好文非常多,本文希望僅起到拋磚引入的效果,感謝所有作者~
想起來了16年MDCC上明云兇做過一個性能優(yōu)化的分享,所以每次談到性能優(yōu)化我都能想到當(dāng)年演講的ppt。
對了,騰訊有個非常強大的手機上的“集成調(diào)測環(huán)境”,就是手機上的軟件,可以用于性能檢測,叫GT。
文章標(biāo)題:Android編程開發(fā)之性能優(yōu)化技巧
當(dāng)前地址:http://m.5511xx.com/article/cdhsgoi.html


咨詢
建站咨詢
