`
yidongkaifa
  • 浏览: 4064941 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

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

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



方法二:

  1. privatelongexitTime=0;
  2. @Override
  3. publicbooleanonKeyDown(intkeyCode,KeyEventevent){
  4. if(keyCode==KeyEvent.KEYCODE_BACK&&event.getAction()==KeyEvent.ACTION_DOWN){
  5. if((System.currentTimeMillis()-exitTime)>2000){
  6. Toast.makeText(getApplicationContext(),"再按一次退出程序",Toast.LENGTH_SHORT).show();
  7. exitTime=System.currentTimeMillis();
  8. }else{
  9. finish();
  10. System.exit(0);
  11. }
  12. returntrue;
  13. }
  14. returnsuper.onKeyDown(keyCode,event);
  15. }


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




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics