日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android官方开发文档Training系列课程中文版:布局性能优化之布局层级优化

發布時間:2025/5/22 Android 161 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android官方开发文档Training系列课程中文版:布局性能优化之布局层级优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文地址:http://android.xsoftlab.net/training/improving-layouts/index.html

引言

布局是直接影響用戶體驗的關鍵部分。如果實現的不好,那么布局很有可能會導致內存的緊張。Android的SDK包含的一些工具可以用來檢查布局性能上的問題。結合本章的課程學習,你將有能力以低成本的內存開銷實現更為順暢的UI體驗。

優化布局層級

有一個常見的誤解就是使用基本的布局結構會使布局更高效。然而卻不是這樣的,每一個控件、布局容器都需要執行初始化、排布、繪制等過程。舉個例子,使用內嵌的LinearLayout會使布局層級過度加深。進一步講,內嵌多個使用了layout_weight參數的控件所花費的代價尤其高昂,因為每個子View都需要被測量兩次。這在布局被重復加載時尤為重要,比如使用在ListView或GridView中的時候。

在這節課我們將會學習如何使用Hierarchy Viewer工具及Layoutopt工具來檢查、優化布局。

布局檢查

Android的SDK包含了一個名為Hierarchy Viewer的工具。使用該工具可以幫助發現影響布局性能的瓶頸。

Hierarchy Viewer工作于所選擇的進程上,它會顯示一個布局樹。每個View節點上的信號燈代表了該View在測量、排布、繪制上的性能優劣,這可以幫助你發現潛在的問題。

舉個例子說明:下圖是ListView的一個Item。該Item左邊用于顯示圖片,而右邊則顯示兩行文本。因為該Item會被進行多次加載,所以對其優化的話,那么UI性能會有顯著的提升。

Hierarchy Viewer工具位于< sdk>/tools/目錄下。打開后,Hierarchy Viewer會列出當前的可用設備以及設備上運行的組件。點擊Load View Hierarchy來瀏覽所選組件的布局層級。下圖是上圖位于ListView中的運行效果演示:

在上圖中,我們可以看到View的層級為3,并且在文本的排布上發現了一些問題。點擊每個節點我們可以看到每個階段所花費的時間(如下圖所示)。那么我們就可以很清晰的知道哪個Item在測量、排布、渲染上花費的時間最長,所以我們就需要花點時間專門對其優化。

這里我們可以看到每個階段所花費的時間:

  • Measure: 0.977ms
  • Layout: 0.167ms
  • Draw: 2.717ms

調整布局

因為上面的示例說布局的性能慢是由于內嵌了一個LinearLayout,所以改進這部分性能只能通過扁平化來處理。要盡量使布局變淺變寬,杜絕變窄變深。RelativeLayout可以實現這樣的布局。所以當使用RelativeLayout實現這樣的布局時,那么可以看到布局的層級變為了2。我們所看到的布局圖就是這個樣子:

下面是優化后的時間開銷:

  • Measure: 0.598ms
  • Layout: 0.110ms
  • Draw: 2.146ms

我們可能會看到很微小的改進。

在改進時間上的大部分差別是由于LinearLayout的權重造成的,它會降低測量的速度。這里的示例僅僅是個優化手段的演示,在開發過程中應當認真考慮是否有必要使用權重。

使用Lint

開發者應該使用lint工具來檢查布局層級是否有可優化的地方。Lint 與Layoutopt 相比有更加強大的功能。一些Lint的檢查規則如下:

  • 使用組合圖形 - 一個包含了ImageView和TextView的LinearLayout作為組合圖形處理起來更加高效。
  • 合并根幀布局 - 如果一個FrameLayout是根布局,并且它沒有提供背景色或內邊距什么的,那么可以使用合并標簽將其替換,這可以稍微的改進性能。
  • 無用的葉子節點 - 如果一個布局沒有子View,沒有背景色,那么通??梢詫⑵湟瞥?/li>
  • 無用的中間節點 - 如果一個布局內部只含有一個子View,并且不是ScrollView或者根布局,也沒有背景色,那么可以將它移除,并將其子View移動到它的父容器內。
  • 非常深的布局嵌套 - 一個被嵌套很深的布局通常不利于性能??紤]使用RelativeLayout或者GridLayout這種扁平化布局來改進性能。默認的最大深度為10。

Lint的另一個好處就是它被集成進了Android Studio。Lint會在程序編譯時自動運行。

你也可以管理檢查Lint的配置,在Android Studio內通過File>Settings>Project Settings路徑可以找到。

Lint可以自動的修復一些問題,并且會對余下的問題提供一些優化建議,以便使開發者手動修復。

總結

以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:布局性能优化之布局层级优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。