Android中Activity实现再按一次退出


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

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

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

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

以下代码在Activity中

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

下面是一个辅助类。

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

相关内容