Android性能:高版本Android关闭硬件加速GPU渲染滑动卡顿掉帧
如果在Androidmanifest.xml配置:
<application android:hardwareAccelerated="false" >
或者某个特点View使用代码:
myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
将关闭硬件加速(GPU渲染),这将使得主线程CPU绘制图形,系统就不会初始化RenderThread ,直接CPU调用 libSkia 来进行渲染图像。此时抓到的trace文件可以看到,没有RenderThread,只有UI Thread,
UI Thread将直接在主线程调用CPU绘制图像,这非常低效,更容易造成卡顿。
Android提供关闭硬件加速(GPU渲染)的接口,主要原因是在早期的Android系统中,一些绘图API接口或底层硬件不支持硬件加速。现如今由于硬件工艺水平提升以及高版本Android系统迭代,绝大多数绘图API接口均已得到硬件加速支持,所以,开发者原则上请不要关闭硬件加速。
参考:
Android硬件加速hardwareAccelerated支持/不支持的绘图接口-CSDN博客文章浏览阅读465次,点赞5次,收藏17次。三Buffer轮转情况下,基本不会有这种情况的发生,渲染线程一般在 dequeueBuffer 时,都可以顺利拿到可用的 Buffer (如果 dequeueBuffer 本身耗时那就也会拉长时间)。在Android早期的版本,由于硬件制造商差异大,增加了这一开关,但随着Android系统版本的迭代,以及硬件技术水平提升,现有的绝大多数Android手机硬件层面均已支持硬件加速(GPU渲染),Android本身也只有有限几个接口不支持硬件加速。https://blog.csdn.net/zhangphil/article/details/138502494
Android GPU渲染屏幕绘制显示基础概念(1)-CSDN博客文章浏览阅读685次,点赞20次,收藏12次。CPU返回后,会直接将GraphicBuffer提交给SurfaceFlinger,告诉SurfaceFlinger进行合成,但是这个时候GPU可能并未完成之前的图像渲染,这时候就牵扯到一个同步,Android中,用的是Fence机制,SurfaceFlinger合成前会查询Fence,如果GPU渲染没有结束,则等待GPU渲染结束,GPU结束后,会通知SurfaceFlinger进行合成,SF合成后,提交显示,最终完成图像的渲染显示。而对SF来说,只要有合成任务,它就得再去申请VSYNC-sf。https://blog.csdn.net/zhangphil/article/details/138585120
Android性能:Double Buffer双缓冲/Triple Buffer三缓冲丢帧Jank与无丢帧No Jank-CSDN博客文章浏览阅读856次,点赞6次,收藏13次。Android ADB调试真机设备Android ADB(Andorid Debug Bridge),是Android开发中有用的测试和调试工具。使用Android ADB调试设备,直接在Windows的dos命令窗口输入命名adb即可,如图:为什么执行adb命令后是这样?_android 抓trace。三Buffer轮转情况下,基本不会有这种情况的发生,渲染线程一般在 dequeueBuffer 时,都可以顺利拿到可用的 Buffer (如果 dequeueBuffer 本身耗时那就也会拉长时间)。https://blog.csdn.net/zhangphil/article/details/138213964Android Studio的Profiler生成trace排查Android冷启动耗时,Kotlin_android studio profile 耗时任务排查-CSDN博客文章浏览阅读1.1k次,点赞8次,收藏16次。注意,上面的调用层次结构自上往下即是函数方法的调用链,上面的函数启动了下面的函数。此时AS下面就会自动记录、生成trace,因为只是排查冷启动阶段耗时,所以可以阶段很多时间trace即可,但至少需要大于1500ms,因为那两个耗时方法需要覆盖到。上面有两个方法耗时:mySleep500()和mySleep1000(),目标是通过Profiler的trace把这两个冷启动阶段的耗时方法找到。利用AS自带的Profiler抓取trace排查定位冷启动耗时方法,不用写代码,直接配置AS即可完成。_android studio profile 耗时任务排查https://blog.csdn.net/zhangphil/article/details/136692903