protected boolean flag = false; @Override public 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 @Override public 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; @Override public 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() { } }));
编辑
Android基础:Android 按2次back键程序才退出
最新推荐文章于 2024-05-23 10:52:02 发布