0

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

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

4

2 回答 2

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
        }
    }
于 2012-07-31T08:11:38.243 回答
0

我认为你应该使用 ReentrantLock 来同步你的应用程序逻辑。

于 2012-07-31T01:31:54.037 回答