第一种
/** * 判断是否已经点击过一次回退键 */ private boolean isBackPressed = false; /** * 双击回退键退出程序 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (!isBackPressed) { isBackPressed = true; Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); } else { AppManager.getAppManager().appExit(); } new Handler().postDelayed(new Runnable() { @Override public void run() { isBackPressed = false; } }, 2000); return true; } return super.onKeyDown(keyCode, event); }
第二种
private long exitTime = 0;// 退出时间 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 判断间隔时间 大于2秒就退出应用 if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(MainActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show(); // 计算两次返回键按下的时间差 exitTime = System.currentTimeMillis(); } else { // 关闭应用程序 finish(); // 返回桌面操作 // Intent home = new Intent(Intent.ACTION_MAIN); // home.addCategory(Intent.CATEGORY_HOME); // startActivity(home); } return true; } return super.onKeyDown(keyCode, event); }