自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Android編程開發(fā)之性能優(yōu)化技巧

開發(fā) 后端
本篇文章我們重點(diǎn)談?wù)撔阅軆?yōu)化的5個(gè)方面:App啟動(dòng)速度優(yōu)化、UI流暢度優(yōu)化、內(nèi)存優(yōu)化、apk瘦身、電量?jī)?yōu)化。

一般情況下,我們談性能優(yōu)化基本上會(huì)從以下幾個(gè)方面:

  1. App啟動(dòng)速度優(yōu)化
  2. UI流暢度優(yōu)化
  3. 內(nèi)存優(yōu)化
  4. apk瘦身
  5. 電量?jī)?yōu)化

還有些網(wǎng)絡(luò)速度優(yōu)化、以及特定類型app的一些針對(duì)性的優(yōu)化,比如播放器起播速度等...。

本篇文章我們重點(diǎn)談?wù)撋厦?個(gè)方面。

Android編程開發(fā)

性能優(yōu)化正常的流程是,發(fā)現(xiàn)自己某方面與競(jìng)品差距比較大,比如UI渲染速度,需要通過(guò)某種方式去發(fā)現(xiàn)為什么比別人慢,往往需要利用一些工具,然后可以做一些針對(duì)性的調(diào)優(yōu)(代碼優(yōu)化、實(shí)現(xiàn)方式改變等),當(dāng)然了在調(diào)優(yōu)的過(guò)程中會(huì)有一些通用性的調(diào)優(yōu)方式可以幫助你。

所以本文從共性的角度來(lái)看,主要介紹的就是針對(duì)以上5個(gè)方面的檢測(cè)工具以及調(diào)優(yōu)方式了。

1. App啟動(dòng)速度優(yōu)化

對(duì)于App啟動(dòng)速度優(yōu)化,一般情況下我們會(huì)利用主題去防止出現(xiàn)白屏;針對(duì)啟動(dòng)速度慢,需要盡可能減少Application的onCreate中所要做的事情,比如一些不重要的SDK延遲或者異步加載;多進(jìn)程情況下一定要可以在onCreate中去區(qū)分進(jìn)程做一些初始化工作;部分將要使用到的類異步加載;還有針對(duì)multidex專門做優(yōu)化的(當(dāng)然這個(gè)隨著5.0以上的設(shè)備越來(lái)越多,影響倒是沒(méi)有那么大了)。

當(dāng)然了,在檢測(cè)啟動(dòng)優(yōu)化上,除了利用adb命令去檢測(cè)總時(shí)間,還有就是去發(fā)現(xiàn)耗時(shí)的方法,可以利用TraceView,或者打開StrictMode,如果你喜歡使用Log,還可以去使用hugo,或者自己寫一個(gè)類似的AOP日志框架。

StrictMode比較簡(jiǎn)單,就不描述了,hugo是Jake大神的一個(gè)開源庫(kù),主要是利用aspectJ,源碼很少,也比較簡(jiǎn)單,不過(guò)使用起來(lái)還不錯(cuò),直接看readme就夠了。

2. UI流暢度優(yōu)化

談到UI流暢度,一般就是不要在主進(jìn)程去做耗時(shí)的操作,提升UI的繪制速度(減少View的布局層級(jí),避免過(guò)渡繪制等)...TraceView、Lint、Hugo、StrictMode等...

當(dāng)然了對(duì)于UI卡頓,不可避免的要引入檢測(cè)的方案:一般有監(jiān)聽Looper的日志。

3. 內(nèi)存優(yōu)化

內(nèi)存優(yōu)化那么主要就是去消除應(yīng)用中的內(nèi)存泄露、避免內(nèi)存抖動(dòng);常用工具就是AS自帶的內(nèi)存檢測(cè),可以很好的發(fā)現(xiàn)內(nèi)存抖動(dòng);leakcanary可以非常方便的幫助我們發(fā)現(xiàn)內(nèi)存泄露;MAT可以做更多的內(nèi)存分析。

4. apk瘦身

關(guān)于Apk瘦身,主要由以下幾個(gè)方式:

  • 利用ProGuard壓縮代碼去除無(wú)用資源
  • andresguard進(jìn)一步壓縮與混淆資源
  • 第三方開源庫(kù)的瘦身,僅保留自己需要的部分
  • ***的圖片壓縮與webp的使用
  • 合理配置去除不必要的配置,僅保留中文配置等...
  • so的優(yōu)化與配置,只保留一類so
  • 動(dòng)態(tài)下發(fā)一些資源:字庫(kù)、so、換膚包等;

以上僅有7比較麻煩,需要服務(wù)端的配合,此外對(duì)于動(dòng)態(tài)下發(fā)So,可以參考tinker對(duì)So熱修復(fù)部分代碼。

5. 電量?jī)?yōu)化

電量?jī)?yōu)化說(shuō)實(shí)在的關(guān)注度較低,一般情況就是合理的使用一些傳感器、謹(jǐn)慎的使用Wake Lock、減少后臺(tái)的不要的操作等...檢測(cè)可以利用battery-historian

好了,大家可以將每個(gè)方案的所采用的實(shí)際的優(yōu)化策略記錄下來(lái),對(duì)每種方式提到的工具一定要自己去體驗(yàn),用起來(lái)肯定不會(huì)有多么的困難,實(shí)操起來(lái)印象會(huì)更加深刻。

性能優(yōu)化并不困難,重要的還是要去實(shí)際的去操作一把,基本上也是面試常見的問(wèn)題了。

***,好文非常多,本文希望僅起到拋磚引入的效果,感謝所有作者~

想起來(lái)了16年MDCC上明云兇做過(guò)一個(gè)性能優(yōu)化的分享,所以每次談到性能優(yōu)化我都能想到當(dāng)年演講的ppt。

對(duì)了,騰訊有個(gè)非常強(qiáng)大的手機(jī)上的“集成調(diào)測(cè)環(huán)境”,就是手機(jī)上的軟件,可以用于性能檢測(cè),叫GT。

責(zé)任編輯:趙寧寧 來(lái)源: 紅黑聯(lián)盟
相關(guān)推薦

2013-02-20 14:32:37

Android開發(fā)性能

2018-11-20 10:50:00

Java性能優(yōu)化編程技巧

2011-07-11 15:26:49

性能優(yōu)化算法

2011-06-14 14:32:46

性能優(yōu)化

2011-06-14 13:48:07

性能優(yōu)化工具

2011-06-14 14:17:23

性能優(yōu)化系統(tǒng)層次

2011-06-14 11:14:10

性能優(yōu)化代碼

2021-07-29 14:20:34

網(wǎng)絡(luò)優(yōu)化移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)

2011-03-11 15:53:02

LAMP優(yōu)化

2019-12-13 10:25:08

Android性能優(yōu)化啟動(dòng)優(yōu)化

2015-09-16 14:47:14

Android性能優(yōu)化代碼

2011-09-29 09:50:44

JavaScript

2019-03-21 14:18:38

iOS開發(fā)優(yōu)化原因

2011-03-11 15:52:57

LAMP優(yōu)化

2013-09-17 10:32:08

Android性能優(yōu)化數(shù)據(jù)庫(kù)

2009-06-16 16:39:49

Hibernate性能

2015-09-16 15:48:55

Android性能優(yōu)化電量

2015-09-16 14:37:50

Android性能優(yōu)化運(yùn)算

2015-09-16 13:54:30

Android性能優(yōu)化渲染

2014-10-28 16:11:37

AndroidApp性能優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)