部分应用中有在主界面中指定时间内连续点击返回键退出应用的功能,实现的思路自然是监听back键,如果连续两次点击间隔时间小于指定时间,则退出应用。现在介绍下实现的两种方式。
重写onKeyDown,监听back键
/** 上次点击返回键的时间 */
private long lastBackPressed;
/** 两次点击的间隔时间 */
private static final int QUIT_INTERVAL = 2000;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK && event.getRepeatCount()==0) {
long backPressed = System.currentTimeMillis();
if (backPressed - lastBackPressed > QUIT_INTERVAL) {
lastBackPressed = backPressed;
Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
重写onBackPressed()
/** 上次点击返回键的时间 */
private long lastBackPressed;
/** 两次点击的间隔时间 */
private static final int QUIT_INTERVAL = 2000;
@Override
public void onBackPressed() {
long backPressed = System.currentTimeMillis();
if (backPressed - lastBackPressed > QUIT_INTERVAL) {
lastBackPressed = backPressed;
Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show();
} else {
finish();
System.exit(0);
}
}
在需要实现此功能的Activity运用上面两种实现方法中的一种就可以了。
如果有Fragment将实现此功能的Activity作为宿主的话,当Fragment显示在屏幕前方时,点击物理返回键同样是此功能,解决办法请点击这里