2012-07-31 59 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 
     } 
    }