天天看点

按两次返回键退出程序和长按返回键退出程序

按两次返回键退出程序:

public class Exit {

[java]  view plain copy

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

Activity:

[java]  view plain copy

  1. public class Back2FinishAppActivity extends Activity {  
  2.     Exit exit = new Exit();  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.     }  
  8.     @Override    
  9.       public boolean onKeyDown(int keyCode, KeyEvent event) {    
  10.         if (keyCode == KeyEvent.KEYCODE_BACK) {    
  11.                 pressAgainExit();    
  12.                 return true;    
  13.                 }    
  14.           return super.onKeyDown(keyCode, event);    
  15.       }    
  16.     private void pressAgainExit() {    
  17.             if (exit.isExit()) {    
  18.                 finish();    
  19.             } else {    
  20.                 Toast.makeText(getApplicationContext(), "再按一次退出程序",    
  21.                         Toast.LENGTH_SHORT).show();    
  22.                 exit.doExitInOneSecond();    
  23.             }    
  24.         }    
  25. }  

长按返回键退出程序:

[java]  view plain copy

  1. public boolean dispatchKeyEvent(KeyEvent event)    
  2.     {    
  3.         int keyCode=event.getKeyCode();    
  4.         switch(keyCode)    
  5.         {    
  6.             case KeyEvent.KEYCODE_BACK: {    
  7.                  if(event.isLongPress())    
  8.                  {    
  9.                      this.stopService(intent);    
  10.                      System.exit(0);    
  11.                      return true;    
  12.                  }else    
  13.                  {    
  14.                      return false;    
  15.                  }    
  16.             }      
  17.         }    
  18.         return super.dispatchKeyEvent(event);    
  19.     }  

继续阅读