Androidのボタン二度押しを防ぐ
AndroidのButtonのonClickが二度呼ばれてしまう問題の対処について。
今作っているサービスのClient side (Android)で、
サーバ通信を伴う部分があり、その契機の1つがButtonがClickされたときになっています。
βテストをやっている中で、
「ボタンが二度押しされて、二度、同じ内容の通信が走ってしまう」
という問題が見つかりました。
その結果、サーバ側のServletが、100msくらいの間隔で二度呼ばれてしまっていました。
どうやら、Android側のButtonのonClickが二度、
続けて呼ばれてしまっていることに原因があったようです。
ほんの短い間に、画面と指が細かく二度触れてしまうことがあるようで。
(Xperiaだとそんなことはなかぅたんですが。。。)
そこで考えたのが、
「前回のonClick時から、1000ms以上立たないとボタンを押させなくする」
という処理を入れること。
具体的には、下記のようなUtilメソッドを、onClickの一番上に挟むことにしました。
public static boolean isClickable() { long time = System.currentTimeMillis(); if (time - mOldTime < 1000) { return false; } mOldClickTime = time; return true; }
この1000msが最終的によいかどうかのチューニングは必要だと思いますが、
今のところ、ボタンの二度押しは防げています。