目录
关于硬件加速
API11之前android是没有GPU的概念的,所有的耗时任务和计算都是依靠CPU实现的,所以当计算量很大时就会出现卡顿的现象,API11之后引入了GUP相关的操作,专门用来执行计算和存储多媒体任务。
硬件加速和软件绘制的区别
可以理解成GPU绘制和CPU绘制的区别,CPU绘图主要有两个层次
- 使view层次结构失效
- 绘制新的view结构
硬件加速模式下的GPU绘图主要有三个层次
- 使view层次结构失效
- 记录、更新绘制指令列表
- 绘制新的view结构(调用OpenGL相关函数)
GPU绘制经历了 view结构失效–>更新绘制指令–>根据指令调用OpenGL函数完成绘制三个步骤。
硬件加速的优缺点
硬件加速的优点和缺点都很明显:优点就是绘图时渲染刷新的速率变快,消除了原来软件绘制时卡顿的现象。
缺点主要有以下几点:
- 兼容性问题,主要是OpenGL的兼容性问题
- 内存消耗问题,加载OpenGL需要消耗大量的内存
- 耗电问题
开启或关闭硬件加速
Android可以从四个层面禁用硬件加速
Application
为AndroidManifest.xml的application标签配置android :hardwareAccelerated =” true ”,整个应用开启硬件加速;android :hardwareAccelerated =” false ”,整个应用关闭硬件加速
Activity
AndroidManifest.xml的activity标签配置android :hardwareAccelerated =” true ”,单个activity开启硬件加速;android :hardwareAccelerated =” false ”,activity关闭硬件加速
Window
Window层级不支持关闭硬件加速,代码如下:
getWiηdow().setFlags(WindowManager.LayoutParams.FLAGHARDWARE_ACCELERATED,WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
View
View层级不支持开启硬件加速
set LayerType(View.LAYER_TYPE_SOFTWARE,null};
或者xml中
android:layerType=”software"