方法一:
1、在Activity中设置一个long型的全局变量 firstTime=0,用来记录第一次按下的时间(单位为毫秒);
2、重写响应Activity的 onKeyUp事件:
@Override
if (keyCode == KeyEvent.KEYCODE_BACK) {
long secondTime = System.currentTimeMillis();
if (secondTime - firstTime > 3000) {//如果两次按键时间间隔大于800毫秒,则不退出
Toast.makeText(MainActivity.this, "再按一次退出程序...", Toast.LENGTH_SHORT).show();
firstTime = secondTime;//更新firstTime
return true;
} else {
System.exit(0);//否则退出程序
}
}
return super.onKeyUp(keyCode, event);
}
方法二:
// 重写Activity中onKeyDown()方法 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) {// 当keyCode等于退出事件值时 ToQuitTheApp(); return false; } else { return super.onKeyDown(keyCode, event); } } //封装ToQuitTheApp方法 private void ToQuitTheApp() { if (isExit) { // ACTION_MAIN with category CATEGORY_HOME 启动主屏幕 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); startActivity(intent); System.exit(0);// 使虚拟机停止运行并退出程序 } else { isExit = true; Toast.makeText(MainActivity.this, "再按一次退出APP", Toast.LENGTH_SHORT).show(); mHandler.sendEmptyMessageDelayed(0, 3000);// 3秒后发送消息 } } //创建Handler对象,用来处理消息 Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {//处理消息 // TODO Auto-generated method stub super.handleMessage(msg); isExit = false; } }; }