在控制檯中新的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