在控制台中新的Android Vitals部分,我收到了超过60%的会话受到慢UI渲染时间影响的警告(错过了Vsync:1.02%,慢UI线程:14.29%慢画命令:96.84%)。我打开GPU剖析我的测试设备上(使用应用程序的生产版本),我看到造成渲染时间超过16毫秒(约24-30ms)以下的TextView更新:更新时慢速渲染TextView
updateTimer = new Timer();
updateTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
timeLeftView.setText(timeLeftString);
}
});
}
}, 100, 500);
当我注释掉了textView更新,屏幕上没有任何更改,并且profiler不会创建任何新条形图。
一条线索是,当用计时器打开活动时,定时器的前3-4个更新已经呈现在大约8ms,但然后他们上升到大约24-30ms。
另一个线索是当我触摸屏幕的任何部分,渲染时间回落到8ms约几秒钟,然后再次射击到24-30ms。当我停止触摸时,渲染时间再次下降几秒钟,然后再次拍摄。
所以想什么,我知道的是:
- 这是正常的,这样一个简单的TextView更新引起高渲染时间?
- 这是什么搅乱了我的Android生命?因为它每秒运行两次。问题可以在别处吗?上述代码是在GPU分析中创建高分辨率的唯一方法,应用程序的其他元素工作正常,具有多个文字浏览和图像的长列表视图渲染时间大约为8ms。
- 我可以做些什么来减少这些绘制时间?我试着去除了TextView的布局中的居中和重心,以及wrap_content(如另一个答案中的建议),但都没有任何效果。除此之外,我不确定要做什么。
我有一个非常类似的问题https://stackoverflow.com/questions/44233870/how-to-fix-slow-rendering-android-vitals。如果你有所进步,或许你想分享。现在这个问题已经成为我的最前沿,因为我无法将它测试的设备限制在Pixel上。 –
现在他们已经正式声明Android的不良行为会影响Play商店的应用排名。 –
那些老鼠混蛋。至于取得进展,我已将这种行为的会话数量从68%减少到35%,这仍然过多。 – TimSim