gpt4 book ai didi

java - onClick() 设置增量和延迟

转载 作者:行者123 更新时间:2023-11-30 00:01:37 26 4
gpt4 key购买 nike

我是 Android 新手,正在开发一个具有一组严格参数的小型项目。其中之一是有一个多功能按钮,每次单击它都会增加一个计时器,并且只有在我没有增加所述计时器 3 秒后才会开始。

我找到了三四种方法来设置各种警报,包括 HandlerCountDownTimerTimer 或其他方式,但我对如何仅使用 onClick() 方法来完成我正在寻找的事情感到困惑。

等待 3s() 的函数,我在之后调用它:

public void wait3s()
{
Thread thread = new Thread() {
@Override
public void run()
{
while (!isInterrupted()) {

try {
Thread.sleep(3000);
runOnUiThread(new Runnable() {
@Override
public void run() {
count++;
threeS.setText(String.valueOf(count));
}
});

} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
thread.start();
}

我的 onClick() 只是调用这些:

public void onClick(View view)
{
increment();
wait3s();
startStop();
}

如您所见,部分问题是我在每次点击时都在那里调用 wait3s(),我需要一种方法来控制没有它的线程/定时器(无论什么)每次点击都会创建一个新的。我现在有点笨,但我已经研究了一段时间了,但我仍然一无所获,因为我以前从未使用过它。

我发现 wait3s() 函数的另一个选项类似于 in this other StackOverflow thread .

谢谢

PS:对不起标题,我找不到更好的方式来描述它,如果你有它,并且有能力改变它,请做。

最佳答案

Handler.removeCallbacks 将有效地取消可运行对象。

boolean timerStarted = false;
clockHandler = new Handler();

OnClick(){
if (!timerStarted){
incrementTimer();
clockHandler.removeCallbacks(null);
clockHandler.postDelayed(new Runnable() {
@Override
public void run() {
// maybe kick off another handler/runnable here to start your timer
timerStarted = true;
}
}
}, 3 * 60 * 1000);
} else {
startStop();
}
}

关于java - onClick() 设置增量和延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49823806/

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