Android 再按一次返回键退出的第三种方式
jopen
11年前
这里给出的,只是另一种实现思路。网上也看到其他方式,原理都是延时判断。
网上已经有了其他方式,个人感觉,onKeyDown里面,尽量减少操作,便有了下面的实现思路。
使用Handler进行实现,在onKeyDown里面只需要发送一条消息,其他操作全交给handleMessage去处理就ok。
首先,定义Handler及事件和等待时长:
private static final int MSG_EXIT = 1; private static final int MSG_EXIT_WAIT = 2; private static final long EXIT_DELAY_TIME = 2000; private Handler mHandle = new Handler() { public void handleMessage(Message msg) { switch(msg.what) { case MSG_EXIT: if(mHandle.hasMessages(MSG_EXIT_WAIT)) { finish(); } else { Toast.makeText(MainActivity.this, "再按一次返回键退出", Toast.LENGTH_SHORT).show(); mHandle.sendEmptyMessageDelayed(MSG_EXIT_WAIT, EXIT_DELAY_TIME); } break; case MSG_EXIT_WAIT: break; } } };
其次,重载onKeyDown:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(KeyEvent.KEYCODE_BACK == keyCode) { mHandle.sendEmptyMessage(MSG_EXIT); return true; } return super.onKeyDown(keyCode, event); }