Android性能優(yōu)化大集結

本篇文章是經(jīng)過多篇博文參考和學習下記錄的,僅供參考學習用,如有侵權或異議有决,請聯(lián)系我修改。

一空盼、App啟動速度優(yōu)化

1.1 Google 加速方案

  • 利用提前展示出來的Window书幕,快速展示出來一個界面,給用戶快速反饋的體驗揽趾;
  • 避免在啟動時做密集沉重的初始化(Heavy app initialization)台汇;
  • 定位問題:避免I/O操作、反序列化篱瞎、網(wǎng)絡操作苟呐、布局嵌套等。

1.2 通用加速方案:

  • 利用主題快速顯示界面俐筋;
  • 異步初始化組件牵素;
  • 梳理業(yè)務邏輯,延遲初始化組件澄者、操作笆呆;
  • 正確使用線程;
  • 去掉無用代碼粱挡、重復邏輯等

1.3 啟動方式:

  • 冷啟動

當啟動應用時赠幕,后臺沒有該應用的進程(常見如:進程被殺抱怔、首次啟動等)劣坊,這時系統(tǒng)會重新創(chuàng)建一個新的進程分配給該應用

  • 暖啟動

當啟動應用時嘀倒,后臺已有該應用的進程(常見如:按back鍵、home鍵,應用雖然會退出,但是該應用的進程是依然會保留在后臺味混,可進入任務列表查看)蔓挖,所以在已有進程的情況下,這種啟動會從已有的進程中來啟動應用

  • 熱啟動

相比暖啟動减细,熱啟動時應用做的工作更少,啟動時間更短怎憋。熱啟動產(chǎn)生的場景很多,常見如:用戶使用返回鍵退出應用皂岔,然后馬上又重新啟動應用

熱啟動和暖啟動因為會從已有的進程中來啟動,不會再創(chuàng)建和初始化Application

平時我們討論中基本都會將暖啟動和熱啟動合在一起統(tǒng)稱為熱啟動,因為暖啟動與熱啟動差異很小悲敷,如果不是特別留意啟動流程后德,那么在用戶體驗和感官上沒有直接差異箱季,但是在framework層執(zhí)行時是有一定差異的赚瘦。本次優(yōu)化點也是圍繞冷啟動和熱啟動來做,將暖啟動與熱啟動統(tǒng)稱為熱啟動
另外有一點套菜,從絕對時間上來看袍睡,app安裝后的首次啟動將會最耗時知染,因為首次啟動會新建數(shù)據(jù)庫肋僧,sp文件,各種緩存,配置等

白屏/黑屏問題

  • 白屏或黑屏嫌吠,具體是哪一個止潘,取決于app的Theme使用的是dark還是light主題

  • Android Studio 引起的白屏
    2.x時代的AS開啟了instant run以后可能會導致白屏,但實際完整的apk包不會出現(xiàn)此問題

  • 冷啟動引起的白屏/黑屏

點擊你app那一刻到系統(tǒng)調(diào)用Activity.onCreate()之間的時間段辫诅。在這個時間段內(nèi)凭戴,WindowManager會先加載app主題樣式中的windowBackground作為app的預覽元素,然后再真正去加載activity的layout布局

  • 暖啟動/熱啟動引起的白屏/黑屏

這點在配置較好炕矮,內(nèi)存空間充足的手機上不是很明顯么夫,但低端手機或者內(nèi)存吃緊的情況下依舊會出現(xiàn)”閃屏”效果,持續(xù)時間很短肤视,一閃而過档痪。

博客地址:https://github.com/DanluTeam

二、布局優(yōu)化方案

2.1 通用布局優(yōu)化方案

  • 調(diào)試GPU過度繪制邢滑,將Overdraw降低到合理范圍內(nèi)腐螟;
  • 減少嵌套層次及控件個數(shù),保持view的樹形結構盡量扁平(使用Hierarchy Viewer可以方便的查看)困后,同時移除所有不需要渲染的view乐纸;
  • 使用GPU配置渲染工具,定位出問題發(fā)生在具體哪個步驟摇予,使用TraceView精準定位代碼汽绢;
  • 使用標簽,Merge減少嵌套層次侧戴、ViewStub延遲初始化庶喜。

相關工具:

(1)、打開Show GPU Overrdraw的選項:設置 -> 開發(fā)者選項 -> 調(diào)試GPU過度繪制 -> 顯示GPU過度繪制;

(2)救鲤、Hierarchy Viewer

博客:http://blog.csdn.net/lmj623565791/article/details/45556391/

http://www.trinea.cn/android/layout-performance/

2.2 檢測應用在UI線程的卡頓

  • 利用UI線程Looper打印的日志久窟;
  • 利用Choreographer。

開源地址

https://github.com/markzhai/AndroidPerformanceMonitor[方式1]

https://github.com/wasabeef/Takt[方式2]

https://github.com/friendlyrobotnyc/TinyDancer [方式2]

三本缠、內(nèi)存優(yōu)化方案

3.1 通用方案

博客:http://blog.csdn.net/guolin_blog/article/details/42238627

3.2 Android開發(fā)常見的內(nèi)存泄漏

  • 單例造成的內(nèi)存泄漏
  • 非靜態(tài)內(nèi)部類創(chuàng)建靜態(tài)實例造成的內(nèi)存泄漏
  • Handler造成的內(nèi)存泄漏
  • 線程造成的內(nèi)存泄漏
  • 資源未關閉造成的內(nèi)存泄漏
  • 使用了靜態(tài)的Activity和View
  • 注冊了系統(tǒng)的服務斥扛,但onDestory未注銷
  • 不需要用的監(jiān)聽未移除會發(fā)生內(nèi)存泄露

博客:https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650822597&idx=1&sn=462b116f97623f239ecf667d3bdef446&chksm=80b7835bb7c00a4d4cbc9f7e19829d9a99f3cf58c1bc43dace16ffec58c98668927c9fa8dcda&scene=21#wechat_redirect

四、APK瘦身

4.1 通用方案

  • 利用ProGuard壓縮代碼去除無用資源丹锹;
  • andresguard進一步壓縮與混淆資源稀颁;
  • 第三方開源庫的瘦身,僅保留自己需要的部分楣黍;
  • 極致的圖片壓縮與webp的使用匾灶;
  • 合理配置去除不必要的配置,僅保留中文配置等...
  • so的優(yōu)化與配置租漂,只保留一類so阶女;
  • 動態(tài)下發(fā)一些資源:字庫颊糜、so、換膚包等秃踩。

檢測應用情況工具:https://nimbledroid.com/

博客:1.http://www.reibang.com/p/8f14679809b3# 2.http://t.cn/RGjNpam

Android性能全分析博客:https://mp.weixin.qq.com/s/QVOYF2nfoWMCbM5YsxQgRQ

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衬鱼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子憔杨,更是在濱河造成了極大的恐慌鸟赫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件消别,死亡現(xiàn)場離奇詭異抛蚤,居然都是意外死亡,警方通過查閱死者的電腦和手機寻狂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進店門霉颠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荆虱,你說我怎么就攤上這事蒿偎。” “怎么了怀读?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵诉位,是天一觀的道長。 經(jīng)常有香客問我菜枷,道長苍糠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任啤誊,我火速辦了婚禮岳瞭,結果婚禮上,老公的妹妹穿的比我還像新娘蚊锹。我一直安慰自己瞳筏,他們只是感情好,可當我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布牡昆。 她就那樣靜靜地躺著姚炕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丢烘。 梳的紋絲不亂的頭發(fā)上柱宦,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天,我揣著相機與錄音播瞳,去河邊找鬼掸刊。 笑死,一個胖子當著我的面吹牛赢乓,可吹牛的內(nèi)容都是我干的忧侧。 我是一名探鬼主播石窑,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼苍柏!你這毒婦竟也來了尼斧?” 一聲冷哼從身側響起姜贡,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤试吁,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后楼咳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體熄捍,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年母怜,在試婚紗的時候發(fā)現(xiàn)自己被綠了余耽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡苹熏,死狀恐怖碟贾,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轨域,我是刑警寧澤袱耽,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站干发,受9級特大地震影響朱巨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枉长,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一冀续、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧必峰,春花似錦洪唐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至桂敛,卻和暖如春功炮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背术唬。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工薪伏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粗仓。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓嫁怀,卻偏偏與公主長得像设捐,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子塘淑,可洞房花燭夜當晚...
    茶點故事閱讀 45,060評論 2 355