首页 > 解决方案 > 令人遗憾的 GPU 渲染配置文件只有光标闪烁

问题描述

这是一个让我困惑的问题。我正在分析我正在开发的应用程序,并注意到每当我停止滚动 RecyclerView 时,GPU 配置文件就会开始指责可怕的统计数据。我无法理解为什么会发生这种情况,屏幕上似乎没有任何更新,直到我注意到 GPU 配置文件图背后的某些变化与图形更新同步。

这是在 EditText 视图中闪烁的光标。

我不敢相信我开发了一个只有在光标闪烁时才会表现得如此可怕的应用程序,所以我调查了其他应用程序、谷歌应用程序,发现问题无处不在,而且不仅限于我的应用程序。

以下是 Gmail 官方应用搜索框内光标闪烁的截图。

在此处输入图像描述

如您所见,GPU 配置文件是不可接受的。

有没有办法解决这个问题或避免这个问题?我记得测试人员在应用程序打开时抱怨电池耗尽,但我当时认为它与套接字连接存在的错误有关。现在考虑到这个问题时,测试人员经常将手机留在光标始终闪烁的同一屏幕上,这很可能是电池耗尽的原因,因此减少简单闪烁光标的影响非常重要。

请考虑我不打算重写光标或更改它的预期行为,我只是试图减少闪烁光标对 GPU 的影响。

标签: androidmemory-leaksgpuandroid-cursorbattery

解决方案


我认为这里报告了您的问题:TextView 光标闪烁 GPU 渲染异常,因为描述似乎与您的火焰图相匹配。

关闭问题并按预期工作的 Google 工程师说:

这实际上是按预期工作的——因为 CPU 的负载非常低(没有动画运行或任何工作正在完成),它以非常低的频率运行,并且它推出的稀有帧渲染速度非常慢。不过这很好——没有出现明显的卡顿,因为没有产生连续的帧。只有当运动的连续性被中断时,才会发生可见的卡顿。但是,如果有运动,CPU 会启动,帧渲染会更快。

当音乐应用每秒只更新一次它们的洗涤器时,你会看到同样的事情,而不是每秒 60 帧。相框需要很长时间,但可以大大节省电池寿命。

虽然这不能回答电池寿命的问题,但可以说最终用户不会花太多时间输入文本,如果最终用户的注意力在文本输入期间从屏幕上移开,要么设备进入空闲/打盹模式,要么用户会使用不同的应用程序,而不是线束/测试计划中的测试设备。

由于渲染文本很复杂,阅读Romain Guy 的 Android 字体渲染器可能会有所帮助


推荐阅读