然而,对于我的应用程序,改善此指标似乎是不可能的。它播放音乐并且有一个SeekBar和TextView,每250毫秒更新一次,就像任何音乐播放器一样。我制作了最小的基本程序进行演示:
public class MainActivity extends AppCompatActivity {
int count;
SeekBar seekBar;
TextView textView;
Runnable runnable =
new Runnable() {
@Override
public void run() {
textView.setText(Integer.toString(count));
seekBar.setProgress(count);
++count;
seekBar.postDelayed(runnable, 250);
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
seekBar = (SeekBar) findViewById(R.id.seek);
textView = (TextView) findViewById(R.id.text);
seekBar.post(runnable);
}
}
完整项目在这里:https://github.com/svenoaks/SlowRendering.git
当我在类似Nexus设备的硬件上运行此程序时,使用以下命令:
adb shell dumpsys gfxinfo com.example.xyz.slowrendering
,我得到以下结果:
Stats since: 19222191084749ns
Total frames rendered: 308
Janky frames: 290 (94.16%)
90th percentile: 32ms
95th percentile: 36ms
99th percentile: 44ms
Number Missed Vsync: 2
Number High input latency: 0
Number Slow UI thread: 139
Number Slow bitmap uploads: 0
Number Slow issue draw commands: 283
这意味着几乎所有的帧都需要超过16毫秒来渲染,我猜测是由于更新的周期性导致的。据我所见,我测试过的所有其他音乐播放器应用程序也存在这个“慢渲染”问题。我担心谷歌的算法会破坏我的应用排名,有没有办法可以提高我的得分?