Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android性能優化之路(一)

Android性能優化之路(一)

編輯:關於Android編程

引言

什麼是APP性能優化?一言以蔽之,就是使APP運行的更高,更快,更強,更穩定。在代碼不夠壯健的時候,APP裡的問題是出於熵增狀態,當熵增到達一個臨界點時,就會引發OOM、ANR、Crash、卡頓等問題。本文,就來研究研究如何去做到APP性能優化。

什麼叫卡頓?

這裡所說的卡頓專門是指用戶在使用Android設備的時候出現了丟幀的現象。當某些頁面UI比較復雜的時候,Android系統可能無法及時的完成頁面UI的渲染。Android系統的渲染機制為了讓用戶感覺不到卡頓,從而將輸出的幀數設置為了60fps(Frames per Second)。由於人類眼睛的特殊生理結構,如果所看畫面的幀率是高於24的話,則會認為是連貫的,這個現象稱之為視覺暫留。一般來說,30fps是可以接受的。但是如果提升到60fps的話,可以明顯提升交互感和逼真感,超過75fps則不容易察覺到有明顯的流暢度提升了。而且,當幀率越高時,系統在渲染的時候所需要的資源就越高。為了將資源利用達到最大化,Android系統將輸出的幀率固定在了60fps.

為了達到60fps,則Android系統需要在1秒渲染60次,每16ms就需要渲染一次,即發出一次垂直同步(VSYNC)信號,來觸發對UI的渲染。那麼,程序的大部分及時響應的操作就必須要在16ms內完成。

舉個例子:當有個操作耗時20ms,系統在接收到VSYNC信號的時候就無法對UI進行渲染,就會發生丟幀現象。

如何解決卡頓?

1.減少UI層疊數。

2.減少動畫繪制次數。

3.優化算法。

4.避開渲染高峰,不要將所有控件同時渲染。

5.主線程不要做耗時操作,耗時操作統統交給子線程來負責。

6.避開GC高峰。

檢測卡頓工具

TraceView

首先,打開Android開發工具DDMS。(AndroidStudio的是從Tools->Android->Android Device Monitor).進入以下頁面:

\

選中所需要跟蹤的APP後,點擊倒數第二個按鈕。會彈出以下頁面

\

在這個頁面可以設置跟蹤項目。選完後點擊OK即開始跟蹤APP了。

Androidsystrace停止後就會根據上圖的設置生成trace.xml文件。打開trace.xml後可以觀察surfaceflinger存在很多空斷,分布不均勻。如果間隔時間大於16ms的話,則表示在這時間點已經發生丟幀現象了。

\

通過放大則可以找到具體是哪些方法耗時過長,從而定位到某個方法。

MethodProfiling

方法分析工具的使用

首先,還是和上面一樣,先打開DDMS.

\

 

點擊第六個按鈕即可開始進行MethodProfiling了。再次點擊,則是結束MethodProfiling並生成分析報告。

\

通過排查,我找到了自己寫的代碼

\

 

發現這個點擊事件需要執行41ms,明顯大於16ms,則表示在點擊事件裡發生了丟幀,產生了卡頓。

再貼一下我的點擊事件

\

寫了個三重循環,並將循環後的值賦給一個TextView。很明顯,這個三重循環是執行在UI線程裡的,而且非常耗時。運行時間肯定是大於16ms。如果將循環次數再次調高的話,APP是一定會ANR的,比卡頓更可怕。

所以,通過MethodProfiling我可以清晰的定位到哪個方法執行耗時過長。這樣,可以進行優化修改,達到性能優化的目的。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved