只要用戶按下返回鍵就設定一個定時器來監控是否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);
}
}