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