本文共 2889 字,大约阅读时间需要 9 分钟。
protected boolean flag = false;@Overridepublic void onBackPressed() { if (flag) { super.onBackPressed(); System.exit(0); } else { Toast.makeText(MainActivity.this, "再点一次则退出App", Toast.LENGTH_SHORT).show(); flag = true; new Handler().postDelayed(new Runnable() { @Override public void run() { flag = false; } }, 2000); }} 在我们使用的app中,会出现这种情况,按下back键app 没退出,弹出吐司“再按一次将退出”,然后我们按一次,app退出了,代码很简单。一是根据Boolean 类型的isExit的值判断是否退出二是根据连续2次按下的时间间隔是否符合我们的条件,来退出。 private boolean isExit=false;//确保第一次按back不退出,因为不走if@Overridepublic void onBackPressed() { if (isExit) { finish();//关闭activity System.exit(0);//程序退出 } else { Toast.makeText(getApplicationContext(), "再按一次将退出", Toast.LENGTH_LONG).show(); isExit=true;//值改为true,确保第二次按走if退出 Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { isExit=false;//2s后将值重新改成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(); } } 按钮禁止连续点击 long oldTime = 0; btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { long clickTime = System.currentTimeMillis(); if (clickTime - oldTime > 2000) { ToastUtil.showShortToast(MainActivity.this, "再按一次则退出app"); } else { ToastUtil.showShortToast(MainActivity.this, "退出App"); } oldTime = clickTime; } }); 给所有的按钮统一添加 public class CustomOnClickListener implements View.OnClickListener { public CustomOnClickListener(TimeLimitClickListener listener) { this.listener = listener; } long oldTime = 0; @Override public void onClick(View v) { long clickTime = System.currentTimeMillis(); if (clickTime - oldTime < 2000) { Toast.makeText(v.getContext(), "2s禁止连续点击", Toast.LENGTH_SHORT).show(); } else { setListener(listener); } oldTime = clickTime; } interface TimeLimitClickListener { void xianZhi2s(); } private TimeLimitClickListener listener; private void setListener(TimeLimitClickListener listener) { listener.xianZhi2s(); }} btn1.setOnClickListener(new CustomOnClickListener(new CustomOnClickListener.TimeLimitClickListener() { @Override public void xianZhi2s() { }})); 编辑
转载地址:http://kjdvi.baihongyu.com/