java - 使用处理程序多次触发可运行程序的效果

标签 java android multithreading handler runnable

我有像这样的简单可运行

private Runnable runnable = new Runnable()
{
    @Override
    public void run()
    {
        someVariable = true;
    }
};

我将它与处理程序一起使用并像这样延迟

handler.postDelayed(runnable, 60000);

如果此功能收到垃圾邮件并且重复调用上述功能,则会将可运行多次添加到消息队列中。

如果是这种情况,是否需要先检查消息队列中是否有一个消息,然后再添加另一个消息队列?

最佳答案

您好,我的方法是在处理程序运行一次后删除消息和回调。我的代码的一个简单示例是

final Handler handler = new Handler();

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            Log.d("runnable", "handler invoked just once");
            handler.removeCallbacksAndMessages(null);
        }
    };

    handler.postDelayed(runnable, 2000);
    handler.postDelayed(runnable, 2000); // demo: if this is called multiple times my runnable code wont run

关于java - 使用处理程序多次触发可运行程序的效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44133838/

相关文章:

android - 将可运行对象发布到使该 View 无效的 View 有时不起作用

java - 私有(private) final vs 私有(private) final

java - 不可能的Java内存一致性错误

java - 如何将 Java 类装箱/转换为父类类型?

java - 在 JUnit 测试中处理 System.exit(0)

java - 一个批处理中的两个不同的准备好的语句

生成器生成的 Python 3 队列,由多进程消耗

java - Jackson 将字段序列化为不同的名称

android - 包 com.facebook 不存在,Facebook Android SDK,IntelliJ Idea

multithreading - Scala 流生产和处理的多线程