BACKキー長押し

Android アプリを作っていて、BACKキーを押した時の処理を書くことがある。
onKeyDown をオーバライドして、よく、KeyEvent.KEYCODE_BACK かつ、KeyEvent.ACTION_DOWN をチェックするが、
BACKキー長押しをハンドルしないと書いている処理によっては思わぬ動作をしてしまう。
これを回避するには、KeyEvent から getRepeatCount() を求めて繰り返しの発生なのかをチェックする。

@Override
public boolean onKeyDown(int keyCode,KeyEvent event){

   if (event.getRepeatCount() > 0) return true;
   if (keyCode==KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_DOWN){
      // BACKキーの処理
      return true;
   }
   return super.onKeyDown(keyCode,event);
}

そうではなくて、ACTION_UP にした方がいいのかも。。。

@Override
public boolean onKeyDown(int keyCode,KeyEvent event){
   if (keyCode==KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_UP){
      // BACKキーの処理
      return true;
   }
   return super.onKeyDown(keyCode,event);
}