我正在尝试连接一个基本的音频播放器。音频方面已经完成,但是我使用SeekBar作为轨道擦除器而且我遇到了性能问题。
SeekBar来自XML布局,我使用相当基本的代码来更新它:
updateTask = new Runnable() {
public void run() {
int elapsed = 0;
if (player != null) {
elapsed = player.getElapsedTime(); // Seconds
}
trackSeekbar.setProgress(elapsed);
updateHandler.postDelayed(this, 1000);
}
};
updateHandler.postDelayed(updateTask, 1000);
此代码占用了Nexus 10的20%-50%CPU!它使我的应用程序的其他部分非常不连贯,所以它必须更快。
我已经在布局中取出了一些内容来尝试减少布局重绘(我在文本框中显示已用时间但放弃了因为它太慢了),但我确实需要一个基本的擦除器。当我取消对setProgress()
CPU的调用降至1%时。有没有更好的方法呢?
答案 0 :(得分:0)
性能不佳的原因是背景中的高分辨率透明PNG。当我删除它时,所有各种性能问题都消失了。
在Nexus 10上,图像为2560x1440,这是它的原始分辨率。看似Android无法应对全分辨率背景图像。