Android基础:Android 按2次back键程序才退出

来源:互联网 发布:2004nba总决赛数据 编辑:程序博客网 时间:2024/05/23 01:54
    private boolean backPressed;    @Override    public void onBackPressed() {        if (backPressed) {            super.onBackPressed();            return;        }        backPressed = true;        ShowTips.showSnack(mDrawLayout, R.string.exit_app);        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                backPressed = false;            }        }, 2000);    }

</pre><p>在我们使用的app中,会出现这种情况,按下back键app 没退出,弹出吐司“再按一次将退出”,然后我们按一次,app退出了,代码很简单。</p><p>源码地址:http://download.csdn.net/detail/ss1168805219/9410692</p><p>有2中方法</p><p><span style="white-space:pre"></span>一是根据Boolean 类型的isExit的值判断是否退出</p><p><span style="white-space:pre"></span>二是根据连续2次按下的时间间隔是否符合我们的条件,来退出。</p><p>方法一:</p><p>定义Boolean类型的变量isExit=false;//确保第一次按back不退出,因为不走if</p><p>第一次点击back,会调用onBackPressed()方法,做 if  else判断,第一次按下back,由于isExit默认值是false,弹出吐司,同时将值改为true,确保第二次按走if.</p><p>     由于第二次按可以是2秒内,也可以是几个小时后,那么只有2秒内按下才退出app,所以,2秒后发送消息将isExit的值改为false,</p><p>     第二次点back:关闭activity,退出app.</p><p></p><pre name="code" class="java">/*方法一:*/private boolean  isExit=false;//确保第一次按back不退出,因为不走if@Overridepublic void onBackPressed() {if (isExit) {finish();//关闭activitySystem.exit(0);//程序退出} else {Toast.makeText(getApplicationContext(), "再按一次将退出", Toast.LENGTH_LONG).show();isExit=true;//值改为true,确保第二次按走if退出Timer timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {isExit=false;//2分钟后将值重新改成false,确保2次按下的事件在2分钟内.也可以用handler将值改为false}}, 2000);}}
方法二:判断时间间隔<2000毫秒,退出app

long exitTime=0;@Overridepublic void onBackPressed() {if (System.currentTimeMillis()-exitTime>2000) {Toast.makeText(getApplicationContext(), "再按一次将退出", Toast.LENGTH_LONG).show();exitTime=System.currentTimeMillis();} else {finish();System.exit(0);}}    //或者
    @Override    public void onBackPressed() {        if (System.currentTimeMillis() - time < 2000) {            super.onBackPressed();        } else {            showToast("再点击一次退出哦!");            time = System.currentTimeMillis();        }    }


                                             
0 0
原创粉丝点击