在Android上缓慢的SeekBar性能

时间:2014-02-04 11:42:42

标签: android performance seekbar

我正在尝试连接一个基本的音频播放器。音频方面已经完成,但是我使用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%时。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:0)

性能不佳的原因是背景中的高分辨率透明PNG。当我删除它时,所有各种性能问题都消失了。

在Nexus 10上,图像为2560x1440,这是它的原始分辨率。看似Android无法应对全分辨率背景图像。