天天看點

Android 按兩次傳回鍵、長按傳回鍵退出程式

按兩次傳回鍵退出程式,方式一:

public class Exit {

    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;
    }
}
           

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();  
            }  
        }  
}
           

按兩次傳回鍵退出程式,方法二:

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); 
} 
           

長按傳回鍵退出程式

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);  
      
}