这是一个让我感到困惑的问题。我正在对自己正在开发的应用程序进行性能分析,并发现每当我停止滚动RecyclerView时,GPU配置文件就会开始指责可怕的统计数据。我不明白为什么会这样,直到屏幕上的任何东西似乎都没有更新,直到我注意到与图形更新同步的GPU配置文件图形后面发生了变化。
是光标在EditText视图中闪烁。
我不敢相信自己开发的应用程序只有在光标闪烁时才会表现得如此恐怖,因此我调查了其他应用程序,谷歌应用程序,发现问题无处不在,并且不仅限于我的应用程序
以下是截取的截图,其中只是光标在Gmail官方应用程序的搜索框中闪烁。
如您所见,GPU配置文件是不可接受的。
是否有解决此问题或避免此问题的方法?我记得测试人员抱怨该应用程序打开时什么都不做,但是我当时认为它与套接字连接中存在的错误有关。现在,考虑到此问题时,测试人员经常将手机放在光标始终闪烁的同一屏幕上,这很可能是造成电池电量耗尽的原因,因此,重要的是要减少简单闪烁的光标所带来的影响。>
请考虑我既不打算重写游标,也不打算更改其预期的行为,我只是想减少闪烁的光标对GPU的影响。
答案 0 :(得分:1)
我认为您的问题已在此处报告:TextView cursor blink GPU rendering unusual,因为说明似乎与您的火焰图相符。
在按预期工作的情况下解决问题的Google工程师表示:
这实际上按预期方式工作-因为CPU的电量非常低 加载(没有动画运行或正在完成任何工作),它以 频率非常低,而且它确实推出的罕见帧非常慢 渲染。很好-虽然没有明显的垃圾, 因为没有连续帧。可见的垃圾只能 当连续运动被中断时发生。如果有 虽然是运动的,但CPU会计时,并且帧会渲染 快多了。
当音乐应用程序仅更新其洗涤器时,您会看到相同的内容 每秒一次,而不是每秒60帧。相框需要很长时间,但是 这样可以大大节省电池寿命。
虽然不能回答电池寿命问题,但可以说最终用户不会花太多时间输入文本,并且如果最终用户的注意力在文本输入过程中从屏幕上移开,则任一设备都会进入空闲/打ze模式或用户将使用其他应用,而不是线束/测试计划中的测试设备。
由于渲染文本很复杂,可能有助于阅读Android's Font Renderer by Romain Guy