• Android两次后退键退出


    转载请注明出处:http://blog.csdn.net/javacattle/article/details/41964045

    仅仅要在 *.Java 文件里加入就可以

    private int back = 0;
    
    //===============back两次退出=====================
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {//必要的改变
       menu.add(0, 2, 2, "退出");
       return super.onCreateOptionsMenu(menu);
      }
     
    
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()) {
       case 2:
        Myback();
        break;
       }
       return super.onOptionsItemSelected(item);
      }
    
     
      @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {//两次back退出
       if (keyCode == KeyEvent.KEYCODE_BACK) {
        back++;
        switch (back) {
        case 1:
         Toast.makeText(MainActivity.this, "再按一次退出",
           Toast.LENGTH_SHORT).show();
         break;
        case 2:
         back = 0;// 初始化back值
         Myback();
         break;
        }
        return true;// 设置成false让back失效 ,true表示 不失效
       } else {
        return super.onKeyDown(keyCode, event);
       }
      }
    
      public void Myback() { // 关闭程序
       MainActivity.this.finish();
       android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程
      }


    //因为网友的提醒(@菜鸟_晧 @貌似掉线)。菜鸟级别的我又又一次改动了代码,而且能够非常好的使用,对于他们的建议表示感谢,改动后的代码:
    private int tDifference = 2000;//等待的时间
    private boolean isExit = false;   //状态
    private Timer mTicker = null;//定义Timer时间器
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {// 两次back退出
    if (keyCode == KeyEvent.KEYCODE_BACK) {
    Myback();
    return true;
    } else {
    return super.onKeyDown(keyCode, event);
    }
    
    }
    
    
    public void Myback() { // 关闭程序
    if(isExit){
    MainActivity.this.finish();
    android.os.Process.killProcess(android.os.Process.myPid());// 关闭进程
    }else{
    Toast.makeText(MainActivity.this, "再按一次退出", Toast.LENGTH_SHORT).show();
    isExit = !isExit;
    if(null == mTicker){
    mTicker = new Timer();
    }
    mTicker.schedule(new TimerTask() {
    @Override
    public void run() {//改变标识
    isExit = false;
    
    }
    },tDifference );
    }
    }
    


    PS:android上本人菜鸟一枚,不喜勿喷

  • 相关阅读:
    Base64的解码和编码
    [WebService]代理类中对枚举类型的序列化
    Linq中的Where与SkipWhile
    Html 5中自定义data*特性
    实用TSQL之生成当前索引数据库中的外键上
    使用Post/Redirect/Get实现Asp.net防止表单重复提交
    用SquishIt最小化Css与Javascript文件
    Asp.net MVC 3 中 Unobtrusive javascript 与Ajax
    HTML5中custom data*特性与asp.net mvc 3 表单验证
    实现Asp.net MVC中AjaxOnly特性
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/8847772.html
Copyright © 2020-2023  润新知