首页 > 解决方案 > 处理程序不会停止,handler.removeCallbacksAndMessages(null) 在 android (kotlin) 的片段中不起作用

问题描述

这里面有一个活动我有viewPager,每个片段都是相同的,在那个片段里面我有处理程序,问题是当我第一次进入这个活动并退出活动然后处理程序停止,但是当我再次进入然后退出这个活动,处理程序不会停止。我还在 onDestroy() 和 onDestroyView() 中调用 handler.removeCallbacksAndMessages(null),请帮我解决这个问题。

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

loadImage()

下面是我的 loadImage 函数

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

在 Fragment 的 onCraeteView 中,我调用 fun loadImage(),它会启动处理程序,我想每 10 秒在当前 Fragment 中多次调用这个 fun loadImage(),但是 fun loadImage() 中的 handler!!.removeCallbacksAndMessages(null) 会不行。

我也调用了下面,但是当我销毁片段处理程序时仍然会运行

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

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

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

标签: androidkotlinandroid-fragmentshandlerrunnable

解决方案


推荐阅读