1

私はかなり単純なアプリケーションを Android で作成しています。ほとんどのコードは見栄えを良くするために素敵なアニメーションを処理しています。

私の問題は、ボタンがクリックされることがありますが、onClick リスナーからの関連する onClick() は、別のボタンがクリックされた後にのみ呼び出されることです。

Android は、イベントが生成された時点で処理するのではなく、イベントを「バッファリング」してグループで処理しているようです。

誰かが以前にこの問題を抱えていましたか、または解決策を提案できますか?

それが重要かどうかはわかりませんが、私は通常、匿名オブジェクトをリスナーとして使用しています。

        score.setVisibility(VISIBLE);
    score.setClickable(true);
    score.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            soundEffect.soundForId(SoundEffect.DELETE_SOUND);
            player.setToRmove(true);

                            //Toggle trash button to replace the score button and
                            // identify for the user that this player is due to be deleted
            score.setVisibility(GONE);
            score.setClickable(false);
            trashButton.setVisibility(VISIBLE);
            trashButton.setClickable(true);
            trashButton.invalidate();
        }
    });
4

3 に答える 3

0

プロジェクトで一度同じ問題が発生しました。2~3秒くらいの銃撃音を鳴らしていたのですが、誰かが頻繁にタップするとイベントがグループ化されてしまいました。この問題は、撮影ボタンを押すたびに 2 秒間無効にすることで解決します。お役に立てば幸いです。

于 2012-11-15T08:10:44.770 に答える
0

これを論理的に考えてください。次のシナリオのうち、より可能性が高いのはどれですか?

Android には、UI がイベントを生成する速度を監視するためのコードがいくつかあります。それらが十分に速く生成されていることがわかると、それらを一緒にバッチ処理し始めます。質問。すぐに とはどういう意味ですか? どのような仮定を立てる必要がありますか? なぜ私はそのような非常識なコードを書くのでしょうか?

または

イベントが発生したときに匿名の内部クラスのインスタンスが作成され、それらのインスタンスが単一のスレッド (メイン UI スレッド) で実行されるため、Android はこれらのインスタンスを実行するためのメッセージをスレッドのメッセージ キューに配置します。質問?

メイン スレッドでコードを実行していて、それが些細なことではなく、通常は UI の更新に関係しない場合は、別のスレッド (AsyncTask など) を使用してコードを実行します。2 ~ 3 秒かかる場合は、必ずこれを行う必要があります。

于 2012-11-15T08:20:08.377 に答える
0

このようなイベントの「グループ化」については知りません。もちろん、イベントはキューから処理されます。Simon が示唆したように、ある時点で UI スレッドでやりすぎて、ブロックする可能性があります。

于 2012-11-15T08:56:36.157 に答える