В основном я использую панели поиска, чтобы показать пользователю, как воспроизведение звука происходит, мое визуальное обновление представлено в Thread
и выглядит следующим образом:SeekBar дергается во время воспроизведения
@Override
public void run() {
while(mUpdating) {
if(mSeekBar != null) {
mSeekBar.setProgress(mAudioPlaybackManager.getCurrentPosition());
}
//Other stuff is updating
}
}
Так, если пользователь exqample воспроизводит звук, это 2500 мс в длину, это SeekBar
максимальное значение будет 2500, и это будет обновлять каждые мс
Этот же код работает гораздо медленнее runOnUiThread
, поэтому я предполагаю, когда прогресс меняется что-то вроде postInvalidate
, называется
Таким образом, в основном каждый мс, значение параметра поиска должно быть изменено. Наверное, в этом проблема. На моем устройстве Samsung J7
он работает плавно, но на Samsung Galaxy S5
он просто останавливается и прыгает все время, например, если бы я поставил этот код в runOnUIThread
, это было бы очень медленно.
Что я могу сделать, чтобы сделать его более плавным? Есть ли еще View
, которые я могу использовать для этого pirpose?
То, что текущий SeekBar
делает:
Отображение прогресса аудио в основном в
while(updating)
Когда пользователь изменяет положение
SeekBar
звука начинается с этой точки.
Итак, используя наш подход: с задержкой он очень медленный и медленный, если я не установил никакой задержки или 1 мс, он будет плавным, но я не думаю, что есть разница с Thread, мы должны увидеть, будет ли это работать на этом устройстве, я не уверен в этом –
Не могли бы вы предоставить больше своих кодов, чтобы я мог имитировать его, я подозреваю, что в этом 'mUpdating'е что-то не так, что могло бы задержать операцию в поисковом баре. Быстрое обновление в пользовательском интерфейсе всегда было проблемой, хотя в некоторых случаях работа будет безупречно из-за быстрой/хорошей поддержки жесткого диска на самом устройстве. –