gpt4 book ai didi

java - 在软件中实现超时

转载 作者:行者123 更新时间:2023-12-02 06:19:27 24 4
gpt4 key购买 nike

我的问题可能是一个常见的要求。不幸的是,在任何地方都没有找到合适的指南。

我需要在Java软件中设置超时。在我的设置中,我将鼠标连接到 Android 设备。

基本上我的 Android 应用程序有两种模式:ENGAGED 和 DISENGAGED。
默认情况下,应用程序处于 DISENGAGED 模式。
该应用程序在“接合”和“脱离”模式下显示不同的屏幕,并根据模式自动控制。
现在要进入“ENGAGED”模式,用户需要单击鼠标左键。只要用户使用鼠标,应用程序就会保持在使用模式。如果用户在 30 秒内没有使用鼠标,应用程序将返回“DISENGAGED”模式。

虽然在软件中,我会收到用户执行的每次触摸的事件,但显然,自上次触摸以来已经过了 30 秒,我没有收到任何事件。因此,我需要一个适当的解决方案来返回脱离模式。

如何在软件中实现这一点?代码流程的基本轮廓就足够了,不需要是精确的工作代码。我很喜欢使用信号量、任务、互斥体等。

最佳答案

您需要做的就是启动一个简单的线程,该线程等待 30 秒,并在检测到鼠标移动时重置。

由于Java只有单一继承,因此通常建议实现Runnable而不是扩展Thread。这是一个应该可以运行的可运行的私有(private)类:

private static class CustomRunnable implements Runnable{
@Override
public void run() {
boolean waiting = true;

while(waiting){
try {
Thread.sleep(30000);
waiting = false;
// went 30 seconds with no interrupt - go to sleep mode
} catch (InterruptedException e) {
waiting = true;
// we were interrupted by mouse movement - restart loop
}
}
}
}

您可以使用以下方式启动线程

Thread sleepThread = new Thread(new CustomRunnable());
sleepThread.start();

您可以使用重置线程

sleepThread.interrupt();

关于java - 在软件中实现超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21147473/

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