Android

硬件加速与GPU

2019-12-05  本文已影响0人  瑟闻风倾

硬件加速:硬件加速执行的所有的绘图操作,都是使用GPU在 View 对象的画布上来进行的。如果盒子有GPU,设置这个会有更好的表现,同时分担CPU的压力(现在的盒子应该都有GPU)。下面是官方解释:
从Android3.0 (API level11)开始,Android的2D显示管道被被设计得更加支持硬加速了.硬加速使用GPU承担了所有在View的canvas上执行的绘制操作。

硬件加速:硬件加速(Hardware acceleration)就是利用硬件模块来替代软件算法以充分利用硬件所固有的快速特性。anroid 4.0之后的版本是默认开启硬件加速的,附上官方说明:Beginning with Android 4.0, hardware acceleration for all windows is enabled by default if your application has set either targetSdkVersion or minSdkVersion to “14" or higher.

  • 硬件加速通常比软件算法的效率。 因为启用硬件加速会增加资源的需求,因此这样的应用会占用更多的内存。
  • 计算机显示使用硬件加速会些,但有时会带来负面效果,如会在投影仪或截图时发现显示区是黑的,这时就要关闭硬件加速(硬件加速反方向操作)

1. 是否应该开启WebView硬件加速

(1) 是否应该开启WebView硬件加速

(2) 开启硬件加速后会遇到的问题:页面渲染问题(页面白屏或闪烁)

(3) 关闭硬件加速可能会遇到的问题:页面滑动卡顿

关于视频的解决方法:一个是对于播放视频的webView单独开硬件加速,或者调用外部原生播放器单独播放视频。

(4) 需开启硬件加速的情形示例

2. 开启硬件加速的方法

启用硬加速最简单的的方法是对整个应用启用硬件速.如果你的应用只使用标准的view和Drawable,全局启用硬加速将不会带来任何负面影响.然而,因为硬加速不是被所有的2D绘制所支持,所以启用它时可能对你的自定义绘制产生影响.出现的问题经常是不可见的,也可能是异常,或错误地显示了像素.为了避免这些问题,Android提供了在以下各级别上启用或禁止硬加速的能力。

四种级别对应的开启方式:开启硬件加速只需要在清单文件或者WebViewActivity中配置即可

3. 硬件加速关闭的方法

<!--false表示关闭,true表示打开-->
android:hardwareAccelerated="false"
<activity
    android:name=".WebViewTest"
    android:hardwareAccelerated="false"/>
//如果是自定义的view,可在构造方法中调用该方法,即可开启或者关闭硬件加速
setLayerType(View.LAYER_TYPE_SOFTWARE, null)

注:现在还不能在window级别禁止硬加速.

4. 总结

5. 判定一个View是否能被硬加速

有时一个应用了解是否启用了硬件速是很有用的,对那些自定义View之类的东西尤其重要.在你的应用做了一些不被最新的管线所支持的自定义绘制时这更加重要.有两种方法可以检查应用是否被硬加速:

如果你必须在你的绘制代码中做这个,应使用Canvas.isHardwareAccelerated()而不是View.isHardwareAccelerated().当一个view附加到一个硬加速的window上,它仍可以使用非硬件速的Canvas进行绘制操作.比如当为了高速缓存而把一个view画到一个bitmap中.

上一篇 下一篇

猜你喜欢

热点阅读