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); 
    
    } 
  • 相关阅读:
    Https的请求过程
    计算机网络知识
    数据结构之图
    Python3线程池进程池
    数据结构之堆heapq
    EffectivePython并发及并行
    EffectivePython类与继承
    EffectivePython并发及并行
    5.19完全数
    5.18数字全排列
  • 原文地址:https://www.cnblogs.com/1426837364qqcom/p/5430116.html
Copyright © 2011-2022 走看看