2017-02-23 54 views
3

我目前正在研究一个需要参与者在一段时间过去之前按下按钮的研究的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个试验的循环中。出于某种原因,我的onClickListeners在for循环完成执行之前无法正确创建,即使我将它们放在for循环的开头之上。另外,代码无法标记在循环之后应该按下哪个按钮(通过将button.setText设置为显示的代码段之上来完成)。我可能会做错什么?

要完全清楚,我想等待按钮按下或时间到期后再继续。

科里的回应是我目前实施的。

我真的需要对此做出回应。谢谢 请帮助。

回答

3

记录按钮首次显示时的时间为System.currentTimeMillis(),然后使用相同的方法获取按钮被点击的时间。不同的是他们需要多长时间。

要记录在一定时间内没有发生的点击,您可以使用该记录,这会记录在您的onResume中并记录开始时间。

Handler handlerTimer = new Handler(); 

handlerTimer.postDelayed(new Runnable(){ 
    public void run() { 
     // do something    
    }}, 20000); 
+0

这似乎比我想要做的更简单一些,但是如何知道什么时候过去了,如果按钮没有被按下? –

+1

您可以将处理程序设置为延迟发布。编辑帖子以显示。 –

相关问题