離屏渲染:
在使用圓角、陰影和遮罩等視圖功能的時候,圖層屬性的混合體被指定為在未預合成之前不能直接在螢幕中繪制,所有就需要在螢幕外的上下文中渲染,即離屏渲染。
離屏渲染卡頓原因
離屏渲染之是以會特别消耗性能,是因為要建立一個螢幕外的緩沖區,然後從當屏緩沖區切換到螢幕外的緩沖區,然後再完成渲染;其中,建立緩沖區和切換上下文最消耗性能,而繪制其實不是性能損耗的主要原因。
設定了以下屬性時,就會觸發離屏繪制:
- shouldRasterize(光栅化)
- masks(遮罩)
- shadows(陰影)
- edge antialiasing(抗鋸齒)
- group opacity(不透明)
- 複雜形狀設定圓角等
- 漸變
卡頓等性能問題的最主要根源都是因為渲染性能。從設計師的角度,他們希望App能夠有更多的動畫,圖檔等時尚元素來實作流暢的使用者體驗。但是Android系統很有可能無法及時完成那些複雜的界面渲染操作。Android系統每隔16ms發出VSYNC信号,觸發對UI進行渲染,如果每次渲染都成功,這樣就能夠達到流暢的畫面所需要的60fps,為了能夠實作60fps,這意味着程式的大多數操作都必須在16ms内完成()時間超出16ms越多,丢的幀就越多,可以大概估計一下Android 5秒沒響應抛出anr異常期間丢了多少幀,筆者算了312幀)
渲染工作。
1.作者:Syw
2.本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
3.如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。