有两种方法:
1).第一次点击的时候标记一下状态,提示再按一次退出,然后开始计时,如果超过3秒没有再次按返回,一切状态归零,反之,如果3秒内再次按返回键则进行退出。
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秒则退出,反之将此次时间赋给标记时间,提示再按一次退出。
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); }
时间: 2024-10-09 23:47:17