我目前正在开发一款 Android 应用程序,用于一项研究,要求参与者在经过一定时间之前按下按钮。如果他们在时间到之前没有按下按钮,应用程序应该进入下一个试用期。所有关于在能够被打断的情况下等待一定时间的答案都涉及线程,而我对此经验不多。这是我目前拥有的:
final Long time = System.currentTimeMillis();
end = time + timeAllowed;
//button click listeners
Log.d("Here", "ClickListener");
low.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
response = 0;
end = (long)0;
Log.d("Clicked", "Clicked!");
}
});
high.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
response = 1;
end = (long)0;
}
});
//actually waiting
//This is a really stupid hack
while(System.currentTimeMillis() < end)
{}//nothing happens yet
//timeAllowed has passed
responseTime = System.currentTimeMillis() - time;
这全部包含在 48 次试验的 for 循环中。出于某种原因,我的 onClickListeners 在 for 循环执行完成之前无法正确创建,即使我将它们放在 for 循环开头之上也是如此。此外,代码无法标记应该按下哪个按钮,直到循环结束(通过在显示的代码段上方设置 button.setText 来完成)。我可能做错了什么?
为了完全清楚,我想在继续之前等待按钮按下或时间到期。
Cory 的响应是我目前已经实现的。
我真的需要对此做出回应。谢谢 请帮忙。
最佳答案
用 System.currentTimeMillis()
记录按钮第一次显示的时间,然后用同样的方法获取按钮被点击的时间。不同之处在于他们花了多长时间。
要记录在特定时间内未发生的点击,您可以使用此 ,它将与开始时间的记录一起放入您的 onResume 中。
Handler handlerTimer = new Handler();
handlerTimer.postDelayed(new Runnable(){
public void run() {
// do something
}}, 20000);
关于android - 在一段时间过去之前检测按钮是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404773/