Как мне выполнить handler.removecallback несколько раз? - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь динамически запускать и останавливать поток обработчика.Для этого я использую 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().Этот код работает впервые при вызове, но после этого, когда он вызывается, он не работает.

Любая помощь будет принята.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...