0

タッチを使用して値を追加するアプリケーションに取り組んでいます。値が急速に上昇するのを防ぐために、メソッドが呼び出される前に true であることがチェックされ、呼び出された後に false に設定されるブール値を作成しました。これを行ったのは、値に追加する必要があるものをダブルタッチして2回追加することが不可能になるようにするためです。しかし、私が気付いたのは、画面にすばやく触れた場合、最初の呼び出しでブール値が設定される前にメソッドを呼び出すことができるということです。しかし、基本的な機能が機能することはわかっています。これは、2 回目に触れる前にもう少し待つと、ブール値が正しく設定され、メソッドが呼び出されないためです。

Androidが一定期間タッチイベントを検出しないようにする方法や、ブール値が設定されるまで遅らせる方法があるかどうか疑問に思っています。

4

2 に答える 2

0

アプリのロジックを同期するには、ReentrantLock を使用する必要があると思います。

于 2012-07-31T01:31:54.037 に答える
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 に答える