連打・マルチタップ

Androidでは

  1. 異なるリンクやボタンを同時タップした場合
  2. リンクやボタンを連打した場合

対策を講じないとタップ時の処理が複数回走ってしまいます。

ユーザーへの同意の要求や商品の購入など、大事な処理を複数回呼んでしまうという可能性のある実装は絶対に避けましょう。

【リスク】
・連続で動作することによって、多重で処理を実行してしまう。

【対策】

  1. 異なるリンクやボタンの同時タップに対する制御ボタンのViewGroup(LinearLayout, FrameLayout, ConstraintLayout, RelativeLayoutなど)にsplitMotionEventsを”false”で設定すると、例えばA,B,Cのボタンを同時にタップしたとしても一つのボタンの処理だけ実行されます。
    例:

  2. リンクやボタンの連打に対する制御として、連打時に処理が余計に実行されないように、タップ後に任意の秒数の間、ボタンを無効にする設定を加えましょう。そうすることで連打による複数回の処理実行を避けられます。
    例:

【まとめ】

同時タップへの制御として、
ViewGroupのsplitMotionEventsを”false”にする
という対応が求められます。
splitMotionEventsについて詳しく知りたい方は
公式ドキュメントを参照されるのが良いかと思います。

Android for Developers: android:splitMotionEvents

リンクやボタン連打への制御として、
クリックリスナーを指定の秒数の間に無効化するコード
を例としてあげさせていただきました。

他にも一度押下したら指定の条件を満たさない限り
リンクやボタンを無効にするという制御も考えられます。
開発中のアプリの仕様を確認しましょう。

目次に戻る