編輯:安卓省電與加速
Android從3.0(API Level 11)開始,在繪制View的時候支持硬件加速,充分利用GPU的特性,使得繪制更加平滑,但是會多消耗一些內存。
開啟或關閉硬件加速:
由於硬件加速自身並非完美無缺,所以Android提供選項來打開或者關閉硬件加速,默認是關閉。可以在4個級別上打開或者關閉硬件加速:
Application級別:<applicationandroid:hardwareAccelerated="true" ...>
Activity級別:<activity android:hardwareAccelerated="false" ...>
Window級別:
復制代碼 代碼如下:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
注意:目前為止,Android還不支持在Window級別關閉硬件加速。
View級別:
myView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
注意:目前為止,Android還:不支持在View級別開啟硬件加速。
檢測當前是否啟用了硬件加速:
// 方法一 // 此方法返回true,如果myView掛在一個開啟了硬件加速的Window之下, // 也就是說,它在繪制的時候不一定使用了硬件加速,getDrawingCache myView.isHardwareAccelerated(); // 方法二 // 返回true,如果canvas在繪制的時候啟用了硬件加速 // 盡量采用此方法來判斷是否開啟了硬件加速 canvas.isHardwareAccelerated();
控制硬件加速開關
引言中說過控制硬件加速可以在不同層級進行,這樣可以避免因為一個繪制動作不支持而導致整個應用都不可以使用硬件加速這樣很愚蠢的情況發生。總共有四個層級,從上到下是:
1. Application
應用程序等級控制硬件加速,在AndroidManifest.xml中進行:
<application android:hardwareAccelerated="true" ...>
在Android4.0以上(包含)默認就為true,即打開。如果整個應用都不想用硬件加速,則設定為false。
2. Activity
Activity等級的控制方法還是在AndroidManifest.xml中進行,如下展示了應用整體使用硬件加速,而某一個Activity不使用的例子:
<application android:hardwareAccelerated="true"> <activity ... /> <activity android:hardwareAccelerated="false" /> </application>
3. Window
窗口級控制,如果只是想讓某個窗口使用硬件加速:
getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
4. View
可以通過代碼在運行時控制單個View是否使用硬件加速:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
LAYER_TYPE_HARDWARE即為使用硬件加速(GPU),LAYER_TYPE_SOFTWARE使用CPU進行繪制。
理解View的繪制模型:
1.沒有硬件加速:invalidate the view hierarchy ------> draw the view hierarchy
2.有硬件加速:invalidate the view hierarchy ------> record and update the display list ------> draw the display list
硬件加速的限制:
目前,Android對硬件加速的支持並非完美,有些繪制操作在開啟硬件加速的情況下不能正常工作(具體的列表可以參考Android開發者文檔)。
不過Android可以保證內置的組件和應用支持硬件加速。因此,如果應用中只使用了標准UI組件,可以放心開啟硬件加速。
隨著Android的版本升級,相信一段時間之後,硬件加速可以得到完美的支持。
開啟硬件加速之後的異常反應:
1.某些UI元素沒有顯示:可能是沒有調用invalidate
2.某些UI元素沒有更新:可能是沒有調用invalidate
3.繪制不正確:可能使用了不支持硬件加速的操作, 需要關閉硬件加速或者繞過該操作
4.拋出異常:可能使用了不支持硬件加速的操作, 需要關閉硬件加速或者繞過該操作
隨著智能手機的出現,掀開了手機歷史上一個新的篇章,智能手機和互聯網的發展改變了過去手機單一的通信功能,使人們進入了一個新的移動互聯網社會。不可否認,一項新的技術在發展的過
雖然消費電子技術每年都在不同程度地發展著,但電池技術實際上是停滯不前的。雖然我們經常會看到一些關於未來電池的分析和趨勢,但距離實際應用還擁有一定距離。同時,手機等產品愈發
電量不夠用大概是所有安卓手機用戶們的一個心頭病,同時現在這也是很多廠商們努力的方向,因此現在市場上也有不少的大容量電池的手機紛紛湧現。但是如果用戶本身沒有一個很好的用機習
很多手機都有自帶的省電模式,那麼努比亞Z9省電模式又在哪裡呢?帶著這個疑問,不妨隨本站一起將手頭的努比亞Z9開啟傳說中的省電模式吧!1)進入努比亞Z9【設置】界面,點擊【