有兩種方法:ide
1).第一次點擊的時候標記一下狀態,提示再按一次退出,而後開始計時,若是超過3秒沒有再次按返回,一切狀態歸零,反之,若是3秒內再次按返回鍵則進行退出。spa
boolean isExit = false; int time = 0; @Override public boolean back() { // TODO Auto-generated method stub if (!isExit) { isExit=true; final Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub time++; if (time == 3) { isExit = false; time=0; timer.cancel(); } System.out.println(time+""); } }, 0,1000); showMsg("再按一次退出"); } else if (isExit && time < 3) { finish(); } return true; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_BACK){ return back(); } return super.onKeyDown(keyCode, event); }
2).第一次點擊的時候記下當前時間,第二次點擊的時候取當前時間和上次記錄的時間作差,若是小於3秒則退出,反之將這次時間賦給標記時間,提示再按一次退出。code
long lastTime; @Override public boolean back() { long currTime=System.currentTimeMillis(); if(currTime-lastTime>3000){ showMsg("再按一次退出"); lastTime=currTime; }else{ finish(); } return false; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyCode==KeyEvent.KEYCODE_BACK){ return back(); } return super.onKeyDown(keyCode, event); }