Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一个动作事件后延迟onTouch?_Java_Android_Touch - Fatal编程技术网

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

Java 如何在一个动作事件后延迟onTouch?,java,android,touch,Java,Android,Touch,我正在开发一个应用程序,涉及使用触摸来增加价值。为了防止值上升过快,我创建了一个布尔值,在调用该方法之前将其检查为true,并在调用后将其设置为false。我这样做的目的是为了不可能双击并添加两倍于应该添加到值中的内容。但是,我注意到,如果你足够快地触摸屏幕,你可以在第一次调用中设置布尔值之前调用这个方法。但我知道基本功能是有效的,因为如果我在第二次触摸之前再等待一点时间,布尔值就被正确设置了,方法就不会被调用 我想知道是否有一种方法可以阻止android在一段时间内检测到触摸事件,或者在设置布

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


我想知道是否有一种方法可以阻止android在一段时间内检测到触摸事件,或者在设置布尔值之前进行延迟。

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

你可以使用

示例代码:

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
        }
    }
BlockingQueue=newlinkedblockingqueue(1);
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
queue.offer(1);//如果队列为空,则添加队列
返回true;
返回false;
}
}
公开募捐{
while(true){
试一试{
queue.take();//等待队列中的项目
//此代码在将项目放入队列后执行
//待办事项
Thread.sleep(100);//等待下一次执行
}
}