Android开发:Android 按2次back键程序才退出

来源:互联网 发布:日本国立大学学费知乎 编辑:程序博客网 时间:2024/05/18 08:29

2S内再次点击则退出

在我们使用的app中,会出现这种情况,按下back键app 没退出,弹出吐司“再按一次将退出”,然后我们按一次,app退出了,代码很简单。一是根据Boolean 类型的isExit的值判断是否退出
二是根据连续2次按下的时间间隔是否符合我们的条件,来退出。

方法一:boolean限制

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);    }}
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() {    }}));
原创粉丝点击