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() {
}
}));