2012-07-31 43 views
0

我正在研究一个涉及使用触摸来添加值的应用程序。为了阻止该值上升过快,我创建了一个布尔值,该值在调用该方法前被检查为true,并在调用该方法后将其设置为false。我这样做,所以不可能加倍触摸并添加两次应该添加的值。但是,我注意到,如果您足够快地触摸屏幕,则可以在第一次调用布尔值之前调用该方法。但是我知道基本的功能是可行的,因为如果我再等一会儿再等待一段时间,布尔值就被正确设置,并且方法不会被调用。如何在一次运动事件后延迟onTouch?

我想知道是否有办法阻止android检测一段时间的触摸事件或延迟到布尔值被设置。

回答

0

我想你应该使用ReentrantLock来同步你的应用逻辑。

0

您可以使用BlockingQueue

示例代码:

BlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(1); 

public boolean onTouch(View v, MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      queue.offer(1); // add queue if empty 
      return true; 

     return false; 
    } 
} 

public void run() { 
     while (true) { 
      try { 
       queue.take(); // wait for item in queue 
       // this code is executed after putting item into queue 

       // TODO 

       Thread.sleep(100); // wait before next execution 
     } 
    }