1.通过handler 发送延迟消息
private boolean isExit; Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); isExit = false; } }; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return false; } return super.onKeyDown(keyCode, event); } private void exit() { if (!isExit) { isExit = true; Toast.makeText(this, "next pressed to exit", Toast.LENGTH_SHORT).show(); mHandler.sendEmptyMessageDelayed(0, 2000); } else { finish(); }
2通过记录点击时间来判断
private long exitTime=0; private void exit() { if(System.currentTimeMillis()-exitTime>2000){ Toast.makeText(this,"next pressed to exit",Toast.LENGTH_SHORT).show(); exitTime=System.currentTimeMillis(); }else{ finish(); } }
3.
private int isTouchBack; @Override public boolean dispatchTouchEvent(MotionEvent ev) { isTouchBack=0; return super.dispatchTouchEvent(ev); } @Override public void finish() { isTouchBack++; if(isTouchBack==1){ Toast.makeText(this, "next pressed to exit", Toast.LENGTH_SHORT).show(); }else if(isTouchBack==2){ super.finish(); }