如何在一个动作事件后延迟onTouch?

时间:2012-07-31 01:04:50

标签: java android touch

我正在开发一个涉及使用触摸添加到值的应用程序。为了阻止值过快上升,我创建了一个布尔值,在调用方法之前检查为true,并在调用方法后将其设置为false。我做了这个,所以不可能双击并添加两倍应该添加到值。但是,我注意到的是,如果你足够快地触摸屏幕,你可以在第一次调用中设置布尔值之前调用方法。但我知道基本功能是有效的,因为如果我再等一会儿再触摸第二次布尔值就会被正确设置并且不会调用该方法。

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

2 个答案:

答案 0 :(得分:0)

我认为您应该使用ReentrantLock来同步您的应用逻辑。

答案 1 :(得分: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
        }
    }