Android應(yīng)用性能優(yōu)化大綱

一、如何評(píng)價(jià)一個(gè)應(yīng)用的好壞?

好的應(yīng)用

二、如何評(píng)價(jià)一個(gè)應(yīng)用的性能?

高性能的應(yīng)用

三、快

Android中主線程的關(guān)鍵職責(zé)是處理用戶交互,在屏幕上繪制像素,開發(fā)中應(yīng)該避免任何阻礙主線程的事情,才能對(duì)用戶操作及時(shí)響應(yīng)。

分析工具

應(yīng)用慢、卡頓的根本原因:
1、繪制任務(wù)太重,繪制一幀耗時(shí)太長(zhǎng);
2、主線程太忙,VSync信號(hào)來時(shí)沒有準(zhǔn)好繪制數(shù)據(jù),導(dǎo)致丟幀。


卡頓原因
3.1 UI渲染任務(wù)重

3.1.1 減少布局層級(jí)

  • ConstraintLayout、RelativeLayout、
  • Merge、ViewStub
  • 自定義layout

3.1.2 減少繪制時(shí)間

  • RelativeLayout有性能低的問題,會(huì)對(duì)子view做兩次測(cè)量布局(橫向、縱向)。有開源的只做一次測(cè)量的精簡(jiǎn)版RelativeLayout。
  • LinearLayout有weight屬性,也需要兩次測(cè)量。
  • 少用wrap_content,減少measure成本
  • 刪除無用的屬性
  • 減少過度繪制,去掉重疊區(qū)域多余的背景Activity主題色、Window默認(rèn)背景,自定義view時(shí)看不見的區(qū)域可以不用繪制canvas.clipRect()。同一個(gè)區(qū)域避免繪制多次。
  • 從設(shè)計(jì)上減少圓角、陰影、透明、動(dòng)效,可大幅降低繪制時(shí)間
  • 內(nèi)容預(yù)繪制,比如StaticLayout、優(yōu)化后的Textview --> PrecomputedText

3.1.3 布局復(fù)用

  • include
  • view pool、view holder
3.2 主線程太忙

分析應(yīng)用耗時(shí)可以參看之前的一篇文章 Android性能優(yōu)化之CPU Profiler

3.2.1 內(nèi)存優(yōu)化
內(nèi)存的不合理使用對(duì)UI卡頓、耗電、穩(wěn)定性都有不同程度的影響。所以內(nèi)存優(yōu)化是性能優(yōu)化中最重要的優(yōu)化之一。

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

圖片內(nèi)存優(yōu)化

具體實(shí)現(xiàn)可以參考之前的文章《Android中高效的顯示圖片》。

3.2.2 存儲(chǔ)優(yōu)化

存儲(chǔ)優(yōu)化

四、穩(wěn)

穩(wěn)定性
4.1 Code Review 方法論

4.1.1 code review的時(shí)機(jī):

  1. 底層公共模塊、與其他模塊耦合的功能變更代碼;
  2. 重大feature代碼;
  3. 新同事的代碼;
  4. 發(fā)布前緊急集成的代碼;

4.1.2 code review的人:

  1. 團(tuán)隊(duì)審查;
  2. 模塊負(fù)責(zé)人;
  3. 結(jié)對(duì)審查;

4.1.3 code review流程:

  1. 先審查實(shí)現(xiàn)思路;
  2. 再審查設(shè)計(jì)模式;
  3. 接著審查核心代碼;
  4. 最后審查實(shí)現(xiàn)代碼。

五、小

瘦身

六、監(jiān)控

監(jiān)控的意義:

  1. 發(fā)現(xiàn)問題
  2. 驗(yàn)證優(yōu)化效果

監(jiān)控收集的信息:

  1. 基礎(chǔ)信息
    用戶信息:賬號(hào)、設(shè)備號(hào)、地理位置
    設(shè)備信息:系統(tǒng)版本、硬件型號(hào)、APP版本
    系統(tǒng)狀態(tài):內(nèi)存狀態(tài)、CPU使用率、網(wǎng)絡(luò)狀態(tài)

2、錯(cuò)誤信息
crash堆棧、anr trace文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容