Android官方推薦ConstraintLayout約束性布局,并且也說他的性能比較高,可是我使用官方的方法進行性能測驗,結果ConstraintLayout都比RelativeLayout低,請教下各位是我的測驗方法出錯了嗎?還是有其他原因?
測驗環境:
小米6 MIUI 10 Android 8.0
測驗一個登錄頁面的渲染程序,無須進行網路操作登錄,打開登錄頁面,等待3秒,退出登錄頁面完成測驗即可
登錄頁面如下圖(馬賽克部分只是一個imageview):

代碼邏輯相同,只是使用xml布局檔案不同,一個使用的RelativeLayout布局,如下:

另一個使用約束性布局ConstraintLayout,如下:

檢測之前在登錄的Activity頁面的onCreate和onDestroy分別加入了檢測標簽:

最后在命令列開啟systrace進行性能檢測:
(檢測兩次, trace_con.html是ConstraintLayout的檢測檔案; trace_rea.html是RelativeLayout的檢測檔案)
python /Users/sever1/Library/Developer/Xamarin/android-sdk-macosx/platform-tools/systrace/systrace.py -t 8 -a com.packagename -o ./trace.html gfx view res
最后兩個結果:
ConstraintLayout的測驗結果:

RelativeLayout的測驗結果:

所以,我的結論就是RelativeLayout比ConstraintLayout高,why?不是說好的ConstraintLayout性能高嗎,怎么回事呢?
我的測驗檔案和布局檔案前往這里下載:
鏈接:https://pan.baidu.com/s/1C1gm3hCgaXNtghMFmLwOJQ 密碼:yuq0
uj5u.com熱心網友回復:
直接看官方的文章吧https://mp.weixin.qq.com/s/gGR2itbY7hh9fo61SxaMQQConstraintLayout測量次數比較多,優勢是減少布局的層級,減少過度繪制,提升幀數。如果布局比較簡單還是用原來的布局好點兒。
uj5u.com熱心網友回復:
是不是可以理解其實 布局嵌套不多的情況下,就算是使用relativeLayout布局也比ConstraintLayout性能高,ConstraintLayout實用對嵌套布局層次比較深的修改
uj5u.com熱心網友回復:
沒什么區別,uj5u.com熱心網友回復:
復雜界面的話,ConstraintLayout可以減少布局嵌套深度,簡單的界面ConstraintLayout和其它布局都差不多uj5u.com熱心網友回復:
如果沒設計好,到時候新需求改動,很容易坑到自己或者隊友。。uj5u.com熱心網友回復:
布局層數較深的情況下,ConstraintLayout性能較好。但是缺點太多,還是建議優化布局層數為主。
uj5u.com熱心網友回復:
確實ConstrainLayout的坑太多了,尤其是需要在代碼中操作布局的情況下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/33786.html
標籤:Android
