删除处理程序无法正常工作的回调

Sha*_*ini 1 android handler

我编写了一个处理程序,每隔一段时间调用该方法.我想在destroy()中删除该处理程序.我用的代码如下,In Oncreate()

private final Handler _handler = new Handler();
public int DATA_INTERVAL = 30 * 1000;
Runnable getData;
 getData = new Runnable()
        {
            @Override
            public void run()
            {
                     recieveData();
            }
        };

 _handler.postDelayed(getData, DATA_INTERVAL);
Run Code Online (Sandbox Code Playgroud)

在ondestroy()中,我使用,

_handler.removeCallbacks(getData);
Run Code Online (Sandbox Code Playgroud)

但removecallbacks不起作用.它在退出活动后调用.

ρяσ*_*я K 9

removeCallbacks(Runnable r):

删除消息队列中Runnable r的所有待处理帖子.

因此,removeCallbacks(..)只停止当前未运行runnable的待处理消息(Runnables),因此如果要停止当前运行Runable,则在用户从应用程序退出时对Stoping Thread使用布尔变量.

看到这篇文章的removeCallbacks没有停止runnable

  • 错误.注意他从`onDestroy`调用`removeCallbacks`,它在主线程中运行.因此,要么挂起的Runnable首先运行,然后`onDestroy`取消所有未来的回调,要么`onDestroy`首先运行并取消所有未来的回调,因此之后不会运行Runnable.他有一个不同的问题. (5认同)