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

以上两个功能主要是参考了一下博客的:

http://blog.csdn.net/chenshijun0101/article/details/7682210

http://blog.csdn.net/winlinking/article/details/6596455

方法一:

按两次返回键退出程序:

Activity:

复制代码
public class Back2FinishAppActivity extends Activity {  
    Exit exit = new Exit();  
  
    /** Called when the activity is first created. */  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
    }  
      
      
      
    @Override    
      public boolean onKeyDown(int keyCode, KeyEvent event) {    
        if (keyCode == KeyEvent.KEYCODE_BACK) {    
                pressAgainExit();    
                return true;    
                }    
      
          return super.onKeyDown(keyCode, event);    
      }    
        
    private void pressAgainExit() {    
            if (exit.isExit()) {    
                finish();    
            } else {    
                Toast.makeText(getApplicationContext(), "再按一次退出程序",    
                        Toast.LENGTH_SHORT).show();    
                exit.doExitInOneSecond();    
            }    
        }    
}  
复制代码

辅助类Exit.java

复制代码
private boolean isExit = false;  
private Runnable task = new Runnable() {  
    @Override  
    public void run() {  
        isExit = false;  
    }  
};  
  
public void doExitInOneSecond() {  
    isExit = true;  
    HandlerThread thread = new HandlerThread("doTask");  
    thread.start();  
    new Handler(thread.getLooper()).postDelayed(task, 1000);  
}  
  
public boolean isExit() {  
    return isExit;  
}  
  
public void setExit(boolean isExit) {  
    this.isExit = isExit;  
}  
复制代码

长按返回键退出程序:

复制代码
public boolean dispatchKeyEvent(KeyEvent event)    
    {    
        int keyCode=event.getKeyCode();    
        switch(keyCode)    
        {    
            case KeyEvent.KEYCODE_BACK: {    
                 if(event.isLongPress())    
                 {    
                     this.stopService(intent);    
                     System.exit(0);    
                     return true;    
                 }else    
                 {    
                     return false;    
      
                 }    
            }      
        }    
        return super.dispatchKeyEvent(event);    
            
    }  
复制代码

方法二:

复制代码
private long exitTime = 0; 

 

@Override 

public boolean onKeyDown(int keyCode, KeyEvent event) { 

if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ 

if((System.currentTimeMillis()-exitTime) > 2000){ 

Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); 

exitTime = System.currentTimeMillis(); 

} else { 

finish(); 

System.exit(0); 

} 

return true; 

} 

return super.onKeyDown(keyCode, event); 

} 
复制代码
原文地址:https://www.cnblogs.com/wbp0818/p/5453007.html