目录

介绍

一、GPU和CPU:

二、开启方式

三、检测方式


介绍

从Android3.0(API Level 11)开始支持硬件加速,在Target API >= 14时是默认开启的。可充分利用GPU的特性,使得界面渲染更加平滑,但是会消耗更多内存RAM。硬件加速自身并非完美,在某些Android 5的rom上,由于内存RAM分配的问题,如果代码不当,会引发闪屏、花屏等渲染问题。

如果只使用系统的View和Drawable,则没有任何副作用;降低页面的内存占用,给硬件加速腾出RAM;在适当的地方关闭硬件加速。

硬件加速的主要原理,就是通过底层软件代码,将CPU不擅长的图形计算转换成GPU专用指令,由GPU完成。

一、GPU和CPU:

CPU(Central Processing Unit,中央处理器)是计算机设备核心器件,用于执行程序代码,软件开发者对此都很熟悉;GPU(Graphics Processing Unit,图形处理器)主要用于处理图形运算,通常所说“显卡”的核心部件就是GPU。

下面是CPU和GPU的结构对比图:

其中:

  • 黄色的Control为控制器,用于协调控制整个CPU的运行,包括取出指令、控制其他模块的运行等;
  • 绿色的ALU(Arithmetic Logic Unit)是算术逻辑单元,用于进行数学、逻辑运算;
  • 橙色的Cache和DRAM分别为缓存和RAM,用于存储信息。

从结构图可以看出,CPU的控制器较为复杂,而ALU数量较少。因此CPU擅长各种复杂的逻辑运算,但不擅长数学尤其是浮点运算。CPU是串行结构,以计算100个数字为例,对于CPU的一个核,每次只能计算两个数的和,结果逐步累加。和CPU不同的是,GPU就是为实现大量数学运算设计的。从结构图中可以看到,GPU的控制器比较简单,但包含了大量ALU。GPU中的ALU使用了并行设计,且具有较多浮点运算单元。

很多计算机中的GPU有自己独立的显存;没有独立显存则使用共享内存的形式,从内存中划分一块区域作为显存。显存可以保存GPU指令等信息。

二、开启方式

HardwareAccelerated硬件加速可以在四个级别上控制硬件加速:

1、application:(AndroidManifest.xml)

    <application...android:hardwareAccelerated="true"...>

2、Activity:(AndroidManifest.xml)

        <activityandroid:name=".MainActivity"android:hardwareAccelerated="true">

3、Window

     getWindow().setFlags(WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

4、View

 view.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

在这四个层次中,应用和Activity是可以选择的,Window只能打开,View只能关闭。

三、检测方式

两种方式来检测应用是否在使用硬件加速:

        view.isHardwareAccelerated();//推荐canvas.isHardwareAccelerated();

推荐使用Canvas.isHardwareAccelerated()来检测。因为View关联到一个硬件加速的window上,仍然可以使用非硬件加速的canvas绘制。

四、总结

优点:

  1. 硬件加速对渲染的流畅度有大幅提升。
  2. 在开启硬件加速后,上下拖动列表的感觉是没有跳帧的平滑拖动感,如果没有硬件加速,拖动时能感受到有丢帧。
  3. 在窗体切换动画上也类似,硬件加速开关对切换动画的影响很大。
  4. 对于video、canvas、webgl,没有硬件加速是没法商用的,Android webview里video标签里的视频如果没有硬件加速会看不到画面。

缺点:

  1. 硬件加速属于双缓冲机制,使用显存进行页面渲染(使用较少的物理内存),导致更频繁的显存操作,可能引起以下现象:白屏、花屏、闪屏;
  2. 低RAM内存配置手机上闪退。
  3. 虽然新出的Android5.0的手机整体配置较高(显存较大),但是如果页面中使用大量图片或者过于复杂的CSS样式时同样容易出现白屏、花屏、闪屏现象。

参考连接

《关于Android硬件加速技术分析》

https://blog.csdn.net/iblade/article/details/80240961

Android 使用HardwareAccelerated硬件加速总结相关推荐

  1. android开发 硬件加速,Android 开发之硬件加速

    (1)定义 所谓硬件加速,指的是把某些计算工作交给专门的硬件来做,而不是和普通的计算工作一样交给 CPU 来处理.这样不仅减轻了 CPU 的压力,而且由于有了专门硬件的处理,这份计算工作的速度也被加快 ...

  2. 一文读懂,Android中的硬件加速

    /   今日科技快讯   / 近日,携程发布<2023年春节旅游总结报告>.报告显示,春节期间国内外旅行订单皆迎来三年巅峰,旅游订单整体较虎年春节增长4倍.同时,春节期间出境游整体订单同比 ...

  3. Android中使用硬件加速的技巧

    http://www.uzzf.com/news/2060.html 从Android 3.0开始,Android 2D的绘制流程就设计为能够更好地支持硬件加速.使用GPU的View在Canvas上进 ...

  4. android 自定义view 硬件加速,Android自定义View(八) -- 硬件加速

    Android自定义View(八) – 硬件加速 今天学习自定义View部分的最有一篇:硬件加速因为无法录制GIF,所以本篇内容基本为原博 本文计划根据HenCoder系列文章进行学习,所以代码风格及 ...

  5. Android渲染--重温硬件加速上

    Android中绘图的API很多,比如2D的基于Skia的接口,3D的绘图OpenGLES,Vulkan等.Android早期系统多数都是采用2D的绘图模式,比如绘制一张Bitmap图片.随着用户对视 ...

  6. android关闭硬件动画加速器,Android中的硬件加速

    从Android 3.0开始,Android的2D渲染管线可以更好的支持硬件加速.硬件加速使用GPU进行View上的绘制操作. 硬件加速可以在一下四个级别开启或关闭: Application Acti ...

  7. 安卓禁用硬件加速_[转]Android如何关闭硬件加速

    硬件加速 Android 3.0 (API level 11), 开始支持 所有的View 的canvas都会使用GPU,但是硬件的加速会占有一定的RAM. 在API >= 14上,默认是开启的 ...

  8. android view硬件加速,Android TextureView和硬件加速

    我正在尝试实现 this page上显示的示例.我已经尝试了运行android 4及更高版本的三个不同设备,并且在所有情况下,我都会看到带有此警告的黑屏: 01-27 20:01:22.683: W/ ...

  9. android开发 硬件加速,Android开发的硬件加速

    说到硬件加快就必需和软件加快一路注释. (1)界说 所谓硬件加快,指的是把某些较量工作交给专门的硬件来做,而不是和通俗的较量工作一般交给 CPU 来处理.如许不光减轻了 CPU 的压力,并且因为有了专 ...

最新文章

  1. Spring学习手册番外:context:annotation-config/ 和 mvc:annotation-driven / 的区别
  2. 在C#中重新抛出异常的正确方法是什么? [重复]
  3. eclipse中设置python的版本
  4. 建模揭秘----构建用户模型
  5. python3.6.4安装教程-Python3.6.4官方版
  6. ios开发text kit_iOS富文本(三)深入使用Text Kit
  7. vue中如何关闭eslint检测?
  8. MySQL高级 - 锁 - 锁的概述及分类
  9. 移动端 关闭浏览器事件_前端开发中什么是移动端点透事件?
  10. AS3的Number类型变量不指定初始值,则其初始值为NaN,而不是0.0
  11. 计算机中丢失无法开机密码,手把手教你“电脑开机密码忘记了,无法登录”的解决方法...
  12. vscode背景的更换_vscode背景图怎么换
  13. 好用的计算属性clac
  14. 了解区块链(一)——加密货币以及区块链的价值
  15. mysql 最大值65536_SQL server事物复制报错:要复制的 LOB 数据的长度(xxxxx)超出了配置的最大值 65536...
  16. matlab 绘制可行域内的函数图像
  17. V型滤池类毕业论文文献包含哪些?
  18. CTFshow--常用姿势
  19. 【C++入门】烦人的引用
  20. 《简约至上》读书笔记

热门文章

  1. js获取id后添加html代码,js获取Id的方法getElementById与$的由来和用Id判断元素是否存在及批量动态获取 Id...
  2. 录制回放java_使用Katalon Recorder录制与回放脚本
  3. 信息工程监理:规范工程的灵药
  4. 维修点滴:打印机故障
  5. 索尼PCM-M10使用心得
  6. 注册德国商标条件和程序材料注意事项
  7. KLWP 为安卓手机桌面添加 gif 动图
  8. linux获得蓝牙外设mac,iOS 与蓝牙操作如何获取MAC地址
  9. could not open selected vm debug port 8700
  10. Labelme安装及使用教程