Ich versuche, einen einfachen Audio-Player einzurichten. Die Audio-Seite ist erledigt, aber ich verwende einen SeekBar als Track-Scrubber und habe Probleme mit der Leistung.
Der SeekBar stammt aus einem XML-Layout, und ich verwende ziemlich grundlegenden Code, um ihn zu aktualisieren:
updateTask = new Runnable() {
public void run() {
int vergangen = 0;
if (player != null) {
vergangen = player.getElapsedTime(); // Sekunden
}
trackSeekbar.setProgress(vergangen);
updateHandler.postDelayed(this, 1000);
}
};
updateHandler.postDelayed(updateTask, 1000);
Dieser Code verwendet zwischen 20% und 50% CPU auf einem Nexus 10! Dadurch werden andere Teile meiner App sehr unruhig, daher muss es schneller gehen.
Ich habe bereits einige Dinge im Layout entfernt, um Layout-Neuauftritte zu reduzieren (ich habe die vergangene Zeit in einem Textfeld angezeigt, aber aufgegeben, weil es einfach zu langsam war), aber ich benötige einen einfachen Scrubber. Wenn ich den Aufruf von setProgress()
entferne, sinkt die CPU-Auslastung auf 1%. Gibt es einen besseren Weg, dies zu tun?