Я пытаюсь подключить базовый аудиоплеер. Звуковая сторона выполнена, но я использую SeekBar в качестве трек-скруббера, и у меня возникают проблемы с производительностью.Низкая производительность SeekBar на Android
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);
Этот код занимает от 20% -50% CPU на Nexus 10! Это делает другие части моего приложения очень прерывистыми, поэтому он должен быть быстрее.
Я уже вынимал некоторые вещи в макете, чтобы попытаться уменьшить перерисовку макета (я показывал прошедшее время в текстовом поле, но сдавался, потому что он был слишком медленным), но мне нужен базовый скруббер. Когда я вынимаю звонок до setProgress()
, процессор падает до 1%. Есть ли лучший способ сделать это?
ли поиск в баре без каких-либо ресурсов std (прогресс доступен, большой палец)? – pskink
Да - У меня есть пользовательский большой палец и прогресс, но при его удалении он не меняет использование ЦП. –
hmm действительно странно, попробуйте Log.d в вашем методе запуска, чтобы проверить, не слишком часто он вызван. – pskink