2S内再次点击则退出
在我们使用的app中,会出现这种情况,按下back键app 没退出,弹出吐司“再按一次将退出”,然后我们按一次,app退出了,代码很简单。一是根据Boolean 类型的isExit的值判断是否退出
二是根据连续2次按下的时间间隔是否符合我们的条件,来退出。
方法一:boolean限制
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);
}
}
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() {
}
}));