android 性能優(yōu)化之布局優(yōu)化

注:本文內(nèi)容是《Android 群英傳》學習筆記,主要提煉書中內(nèi)容然后加上部分自己的完善和補充。

android 渲染機制

  1. 16ms :1000ms在顯示60幀畫面的單位時間。系統(tǒng)通過VSYNC信號出發(fā)對UI的渲染、重繪。
  • 檢測UI渲染時間工具
    • 開發(fā)者選項->Profile GPU Rendering(GPU配置未見)->On the screen as bars(以條的形式顯示與屏幕)
    • 每一條柱狀先都包含三部分
    • 藍色代表測量繪制Display List的時間,
    • 紅色代表OpenGL渲染Display List 所需要的時間
    • 黃色代表CPU等待GPU處理的時間。
    • 中間的綠色橫線代表VSYNC時間16ms
    • 需要盡量將所有條形圖都控制在這條綠線之下。

避免Overdraw

避免Overdraw ,開發(fā)者選項中有一個檢測工具(Enable GPU Overdraw 調(diào)試GPU過度軒渲染),減少紅色區(qū)域,增加藍色區(qū)域。

優(yōu)化布局層次

Google建議View 的高度不應超過10層,避免嵌套過多。

ViewStub 實現(xiàn)view的延遲加載

  1. ViewStub默認不加載
  • 兩種方式顯示通過ViewStub 加載顯示的View
  • mViewStub = (ViewStub)findViewById(R.id.viewstub); mViewStub.setVisiable(View.VISIABLE);
  • View inflateView = mViewStub.inflate();
    區(qū)別是inflate()方法可以返回引用的布局,可以通過findViewById 找到layout加載的空間。兒不管使用哪種方式,一旦<ViewStub>被設置為可見或者inflate了,<ViewStub>就不存在了。并將這個Layout 的ID重新設置為<ViewStub>中通過android:inflateId屬性所指定的ID。
<ViewStub> 只有在顯示的時候才回去渲染。#####

利用sdk tools中的hierarchyviewer.bat工具分析

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

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

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