有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使用一个处理程序多次启动可运行程序的效果

我有一个这样简单的runnable

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

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

handler.postDelayed(runnable, 60000);

如果此功能被垃圾邮件发送,并且重复调用上述功能,则会将runnable多次添加到消息队列中

如果是这种情况,在添加另一个消息队列之前,是否先检查消息队列中是否有一个


共 (1) 个答案

  1. # 1 楼答案

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

    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