zoukankan      html  css  js  c++  java
  • 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); 
    
    } 
  • 相关阅读:
    linux命令学习(3):ls命令
    敏捷开发 我的经验(三)运转
    敏捷开发 我的经验(二)资源计算-以人为本
    敏捷开发 我的经验(一)基本概念
    docker 搭建ntp服务器
    非程序员误入
    简单测试服务器磁盘读写速度
    搭建问题二之您添加的站点已存在
    搭建遇到问题一之安装fileinfo扩展插件失败
    简单快速搭建视频网站
  • 原文地址:https://www.cnblogs.com/1426837364qqcom/p/5430116.html
Copyright © 2011-2022 走看看