Обработчик не останавливается, handler.removeCallbacksAndMessages (null) не работает во фрагменте в Android (kotlin)

#android #kotlin #android-fragments #handler #runnable

#Android #котлин #android-фрагменты #обработчик #работоспособный

Вопрос:

внутри этого есть одно действие, в котором у меня есть ViewPager с 3 одинаковыми фрагментами, внутри этого фрагмента у меня есть обработчик, проблема в том, что когда я вхожу в это действие в первый раз и завершаю действие, тогда обработчик останавливается, но когда я снова вхожу, а затем выхожу из этого действия, обработчик не останавливается. Я также вызываю handler.removeCallbacksAndMessages(null) в onDestroy() и onDestroyView() , пожалуйста, помогите мне с этим.

 runnable = Runnable {
            .
            .
            .
    handler!!.postDelayed(runnable, 10000)
}

loadImage()
  

Ниже приведена моя функция загрузки изображения

 fun loadImage() {
   handler!!.removeCallbacksAndMessages(null)
       .
       .
       .
   handler!!.postDelayed(runnable, 0)
}
  

В onCraeteView фрагмента я вызываю fun LoadImage() , он запускает обработчик, я хочу вызывать этот fun LoadImage() несколько раз в текущем фрагменте каждые 10 секунд, но обработчик !!.removeCallbacksAndMessages(null) в fun LoadImage() не работает.

Я также вызываю ниже, но когда я уничтожаю обработчик фрагмента, он все еще работает

 override fun onDestroyView() {
        handler!!.removeCallbacksAndMessages(null)
        super.onDestroyView()
    }

override fun onDetach() {
        super.onDetach()
        handler!!.removeCallbacksAndMessages(null)
    }

override fun onDestroy() {
        super.onDestroy()
        handler!!.removeCallbacksAndMessages(null)
    }
  

Комментарии:

1. Используйте обработчик !!.removeCallbacks(выполняемый);

2. @Piyush Я пробовал это, но все равно не работает.