在这里,最主要的是覆写onKeyDown(int, KeyEvent)方法。

对于实现在一定时间内再按一次退出,思路可以如下:

编写一个辅助类,里面有成员变量boolean isWillExit,当它为true时,则再按一次返回键退出。第一次按返回键时,isWillExit设置为true,再编写一个Runnable实例,在指定时间后设置isWillExit为false。

 

详细看代码吧。代码如下:

以下代码在Activity中

 
  
  1. 1.Exit exit = new Exit();     
  2.  2.// ...     
  3.  3.@Override    
  4.  4.public boolean onKeyDown(int keyCode, KeyEvent event) {     
  5.  5.    if (keyCode == KeyEvent.KEYCODE_BACK) {     
  6.  6.        pressAgainExit();     
  7.  7.        return true;     
  8.  8.    }     
  9.  9.    return super.onKeyDown(keyCode, event);     
  10.  10.}     
  11.  11.    
  12.  12./**    
  13.  13. * 再按一次退出程序。    
  14.  14. */    
  15.  15.private void pressAgainExit() {     
  16.  16.    if (exit.isExit()) {     
  17.  17.        finish();     
  18.  18.    } else {     
  19.  19.        Toast.makeText(getApplicationContext(), "再按一次退出程序",     
  20.  20.                1000).show();     
  21.  21.        exit.doExitInOneSecond();     
  22.  22.    }     
  23.  23.}    

下面是一个辅助类。

 
  
  1. 1.class Exit {     
  2.  2.    private boolean isExit = false;     
  3.  3.    private Runnable task = new Runnable() {     
  4.  4.        @Override    
  5.  5.        public void run() {     
  6.  6.            isExit = false;     
  7.  7.        }     
  8.  8.    };     
  9.  9.    
  10.  10.    public void doExitInOneSecond() {     
  11.  11.        isExit = true;     
  12.  12.        HandlerThread thread = new HandlerThread("doTask");     
  13.  13.        thread.start();     
  14.  14.        new Handler(thread.getLooper()).postDelayed(task, 1000);     
  15.  15.    }     
  16.  16.         
  17.  17.    public boolean isExit() {     
  18.  18.        return isExit;     
  19.  19.    }     
  20.  20.    
  21.  21.    public void setExit(boolean isExit) {     
  22.  22.        this.isExit = isExit;     
  23.  23.    }     
  24.  24.}