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

一、如何評價一個應用的好壞?

好的應用

二、如何評價一個應用的性能?

高性能的應用

三、快

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

分析工具

應用慢、卡頓的根本原因:
1、繪制任務太重,繪制一幀耗時太長;
2、主線程太忙,VSync信號來時沒有準好繪制數據,導致丟幀。


卡頓原因
3.1 UI渲染任務重

3.1.1 減少布局層級

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

3.1.2 減少繪制時間

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

3.1.3 布局復用

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

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

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

內存優(yōu)化

圖片內存優(yōu)化

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

3.2.2 存儲優(yōu)化

存儲優(yōu)化

四、穩(wěn)

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

4.1.1 code review的時機:

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

4.1.2 code review的人:

  1. 團隊審查;
  2. 模塊負責人;
  3. 結對審查;

4.1.3 code review流程:

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

五、小

瘦身

六、監(jiān)控

監(jiān)控的意義:

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

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

  1. 基礎信息
    用戶信息:賬號、設備號、地理位置
    設備信息:系統(tǒng)版本、硬件型號、APP版本
    系統(tǒng)狀態(tài):內存狀態(tài)、CPU使用率、網絡狀態(tài)

2、錯誤信息
crash堆棧、anr trace文件

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容