Я пытаюсь динамически запускать и останавливать поток обработчика.Для этого я использую removecallbacks
.Всякий раз, когда я запускаю removecallbacks
в первый раз, он работает правильно, но когда я пытаюсь сделать это снова, он не работает, и по умолчанию поток обработчика продолжает срабатывать.
Вот мой код:
var handler:Handler = Handler()
var mediaPos = mPlayer!!.getCurrentPosition();
var mediaMax = mPlayer!!.getDuration();
seekbr!!.setMax(mediaMax.toFloat()); // Set the Maximum range of the
seekbr!!.setProgress(mediaPos.toFloat());// set current progress to song's
var moveSeekBarThread = object : Runnable {
override fun run() {
if (mPlayer!!.isPlaying()) {
val mediaPos_new = mPlayer!!.getCurrentPosition()
val mediaMax_new = mPlayer!!.getDuration()
seekbr!!.setMax(mediaMax_new.toFloat())
seekbr!!.setProgress(mediaPos_new.toFloat())
handler.postDelayed(this, 100) //Looping the thread after 0.1 second
}
}
}
handler.removeCallbacks(moveSeekBarThread)
handler.postDelayed(moveSeekBarThread, 100)
seekbr!!.setOnSeekChangeListener(object:OnSeekChangeListener {
override fun onSeeking(seekParams: SeekParams) {
}
override fun onStartTrackingTouch(seekBar:IndicatorSeekBar) {
handler.removeCallbacksAndMessages(null)
}
override fun onStopTrackingTouch(seekBar:IndicatorSeekBar) {
if (mPlayer != null && mPlayer!!.isPlaying()) {
mPlayer!!.seekTo(seekBar.getProgress())
handler.postDelayed(moveSeekBarThread,100)
}
}
})
Здесь я пытаюсь удалить и установить поток обработчика внутри onStartTrackingTouch()
и onStopTrackingTouch()
.Этот код работает впервые при вызове, но после этого, когда он вызывается, он не работает.
Любая помощь будет принята.