方法1:
private long exitTime;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) { // 两次按返回键时间间隔大于2秒,则不退出
Toast.makeText(getApplicationContext(), "再按一次退出应用",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else { // 否则在小于2秒时退出应用
finish();
// System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
方法2:
private int mBackKeyPressedTimes = 0;
@Override
public void onBackPressed() {
if (mBackKeyPressedTimes == 0) {
Toast.makeText(this, "再按一次退出程序 ", Toast.LENGTH_SHORT).show();
mBackKeyPressedTimes = 1;
new Thread() { // 开线程延时2秒设置变量mBackKeyPressedTimes
@Override
public void run() {
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
mBackKeyPressedTimes = 0;
}
}
}.start();
return;
} else {
finish();
}
super.onBackPressed();
}