android - 删除处理程序的回调不起作用

标签 android handler

我编写了一个处理程序,每个时间间隔都会调用该方法。我想删除 destroy() 中的那个处理程序。我使用的代码如下,在 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);

在 ondestroy() 中,我使用,

_handler.removeCallbacks(getData);

但是 removecallbacks 不起作用。它在退出 Activity 后调用。

最佳答案

removeCallbacks(Runnable r) :

Remove any pending posts of Runnable r that are in the message queue.

所以 removeCallbacks(..) 只停止当前未运行的未决消息(Runnables),所以如果你想停止当前运行的 Runnable,那么当用户从你的应用程序退出时使用 bool 变量来停止线程.

请参阅此帖子以获取 removeCallbacks not stopping runnable

关于android - 删除处理程序的回调不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11981899/

相关文章:

java - 为什么android.database.DatabaseUtils不会抛出SQLException等异常?

java - 如何从 Parse.com 检索数组

javascript - 在 JavaScript 中不使用 DOM 事件的自定义事件模型

node.js - 如何访问调用我的 lambda 函数的 url

java - Android 处理程序泄漏

android - 当我在真正的小工具上安装应用程序时,会创建 2 个图标。为什么?

java - Android:计算哈希值的更快方法

java - 通过接口(interface)发送后ArrayList项无法访问

c# - 将 C# 可执行文件的图标设置为文件处理程序的问题

http - 在 Go http 处理程序中处理 Write 调用错误的最佳方法