代码改变世界

Android初级教程_按两次返回键退出程序和长按返回键退出程序

2012-08-02 15:07  java线程例子  阅读(295)  评论(0编辑  收藏  举报

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

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

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


按两次返回键退出程序:

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


长按返回键退出程序:

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


欢迎转载:http://blog.csdn.net/johnny901114/article/details/7823048