我正在开发一个涉及使用触摸来增加价值的应用程序。为了阻止该值上升过快,我创建了一个布尔值,在调用方法之前检查为真,并在调用后将其设置为假。我这样做是因为不可能双击并添加两倍应该添加到值的值。但是,我注意到,如果您足够快地触摸屏幕,您可以在第一次调用中设置布尔值之前调用该方法。但我知道基本功能是有效的,因为如果我在第二次触摸之前稍等片刻,布尔值就会正确设置并且不会调用该方法。
我想知道是否有办法阻止android在一段时间内检测触摸事件或延迟设置布尔值。
您可以使用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
}
}
我认为你应该使用 ReentrantLock 来同步你的应用程序逻辑。