關於android 手機硬體加速問題

2021-07-23 19:20:02 字數 2091 閱讀 8258

分類: android基礎

2012-04-12 14:44

740人閱讀收藏 

舉報硬體加速的官方文件:

開啟硬體加速有兩種大的途徑

1.在系統設定「開發人員……」中勾選啟用gpu加速

2.在應用程式中啟用硬體加速

目前遇到的問題有,啟用硬體加速後,webview的效能受到一定影響,設定背景透明無效。

目前4.0的系統有硬體加速,之前的版本不太清楚。

我們來看怎樣在程式中啟用硬體加速

if (version.sdk_int > version_sdk_eleven)

這是,window級別的硬體加速就啟動了。

對於已經在系統設定項中開啟硬體加速,但是硬體加速會給應用程式帶來問題的情況,可以使用如下方法為應用程式view級別取消硬體加速

mview.setlayertype(view.layer_type_software, null);

這裡有篇非常棒的文章:

本文的主要內容來自sdk文章的"hardware acceleration」.

從android 3.0開始,android的2d渲染管線可以更好的支援硬體加速。硬體加速使用gpu進行view上的繪製操作。

硬體加速可以在一下四個級別開啟或關閉:

activity

window

view

如果您需要更小粒度的控制,可以使用如下**開啟某個window的硬體加速:

getwindow().setflags( windowmanager.layoutparams.flag_hardware_accelerated, windowmanager.layoutparams.flag_hardware_accelerated);
注:目前還不能在window級別關閉硬體加速。

您可以在執行時用以下的**關閉單個view的硬體加速:

myview.setlayertype(view.layer_type_software, null);
注:您不能在view級別開啟硬體加速

很明顯,硬體加速能夠帶來效能提公升,android為什麼要弄出這麼多級別的控制,而不是預設就是全部硬體加速呢?原因是並非所有的2d繪圖操作支援硬體加速,如果您的程式中使用了自定義檢視或者繪圖呼叫,程式可能會工作不正常。如果您的程式中只是用了標準的檢視和drawable,放心大膽的開啟硬體加速吧!具體是哪些繪圖操作不支援硬體加速呢:

paint

另外還有一些繪圖操作,開啟和不開啟硬體加速,效果不一樣:

paint

composeshader

開啟硬體加速後,android框架將採用新的繪製模型。基於軟體的繪製模型和基於硬體的繪製模型有和不同呢?

基於軟體的繪製模型

在軟體繪製模型下,檢視按照如下兩個步驟繪製:

1. invalidate the hierarchy(注:hierarchy怎麼翻譯?)

2. draw the hierarchy

應用程式呼叫invalidate()更新ui的某一部分,失效(invalidation)訊息將會在整個檢視層中傳遞,計算每個需要重繪的區域(即髒區域)。然後android系統將會重繪所有和髒區域有交集的view。很明顯,這種繪圖模式存在缺點:

1. 每個繪製操作中會執行不必要的**。比如如果應用程式呼叫invalidate()重繪button,而button又位於另乙個view之上,即使該view沒有變化,也會進行重繪。

2. 可能會掩蓋一些應用程式的bug。因為android系統會重繪與髒區域有交集的view,所以view的內容可能會在沒有呼叫invalidate()的情況下重繪。這可能會導致乙個view依賴於其它view的失效才得到正確的行為。

基於硬體的繪製模型

android系統仍然使用invalidate()和draw()來繪製view,但在處理繪製上有所不同。android系統記錄繪製命令到顯示列表,而不是立即執行繪製命令。另乙個優化就是android系統只需記錄和更新標記為臟(通過invalidate())的view。新的繪製模型包含三個步驟:

1. invalidate the hierarchy

2. 記錄和更新顯示列表

3. 繪製顯示列表

Android 硬體加速

開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 activity級別 window級別 getwindow setflags windowmanager.layoutparams.flag hard...

Android硬體加速

android從3.0 apilevel11 開始,在繪製view的時候支援硬體加速,充分利用gpu的特性,使得繪製更加平滑,但是會多消耗一些記憶體。開啟或關閉硬體加速 由於硬體加速自身並非完美無缺,所以android提供選項來開啟或者關閉硬體加速,預設是關閉。可以在4個級別上開啟或者關閉硬體加速 ...

Android硬體加速

從android3.0 api level 11 開始,支援硬體加速,可充分利用gpu的特性,使得介面渲染更加平滑。但是硬體加速自身並非完美,在某些webview版本上,比如android5初期的一些rom上的webview版本是chrome37 38版本,由於其本身的硬體加速策略的bug,導致 稍...