gpt4 book ai didi

java - 处理程序 - postDelayed 执行两次

转载 作者:行者123 更新时间:2023-11-29 09:17:59 24 4
gpt4 key购买 nike

当我使用 Handler 及其 postDelayed 方法时,run() 方法执行了两次。以下是我的部分代码。

Handler deneme = new Handler();

deneme.postDelayed(new Runnable() {

@Override
public void run()
{
randomOyna();
}
}, 1000);

其中 randomOyna 是方法

public void randomOyna()
{
Log.v("sonOlarak", "çalıştı");
}

我监控 LogCat,发现“çalıştı”条目被写入了两次,因此 randomOyna 被调用了两次。该任务是真实安排的,但在 1 秒和 2 秒后执行。

最佳答案

改用这个类并检查它是否已经在运行:

public class Timer {

private java.util.Timer timer;

public synchronized void schedule(final TimerTask timerTask, long delay) {
stop();
timer=new java.util.Timer();
timer.schedule(new TimerTask(){

@Override
public void run() {
timerTask.run();
timer = null;
}},delay);
}

public synchronized void stop() {
if(timer!=null) {
timer.cancel();
timer.purge();
timer = null;
}
}

public synchronized void scheduleAtFixedRate(TimerTask timerTask, long delay, long period) {
stop();
timer=new java.util.Timer();
timer.scheduleAtFixedRate(timerTask, delay, period);
}

public boolean isRunning() {
return timer!=null;
}

关于java - 处理程序 - postDelayed 执行两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8300048/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com