只要用户按下返回键就设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态。这个定时器是每次用户按下返回键才去创建,而不是像上面程序启动就已经创建。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_BACK)
{
exitBy2Click();//调用双击退出函数
}
return false;
}
//准备退出
private static Boolean isExit = false;
private void exitBy2Click()
{
Timer tExit = null;
if(isExit == false )
{
isExit = true; //准备退出
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; //取消退出
}
}, 2000); //如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
}else{
finish();
System.exit(0);
}
}