实现后退按钮再按一次退出

    为了防止用户错误按到后退按钮导致的退出应用情况,可以给应用加上后退按钮连续两次点击才能真正退出的功能。

    实现这个功能的原理很简单。监听后退按钮的点击事件。


    ① 首次按下后退按钮,设置一个标志,检查这个标志,如果为false,则将标志置为true,并获取首次按下后退按钮的时间保存下来;
    ② 再次按下后退按钮,检查到标志位true。并将此次按钮按下的事件和保存的时间对比,如果小于某个时间间隔则退出应用。否则,更新首次按下后退按钮的时间为此次时间。

    废话不多说,直接上代码:

// 监听后退按钮
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            
                if (!isBack) {
                     Toast. makeText ( this "再按一次退出!" , Toast. LENGTH_SHORT ).show();
                    downTime = event.getDownTime();
                    isBack = true;
                    return true;
                } else {
                    if (event.getDownTime() - downTime <= 2000) {
                        finish();
                    } else {
                        Toast. makeText ( this "再按一次退出!" , Toast. LENGTH_SHORT ).show();
                        downTime = event.getDownTime();
                        return true;
                    
                }
            }
        }
    


如果想要进一步的优化,可以将标志位直接用downTime取代。将downTime的初值设置为0,比较downTime的值来判断,代码如下:

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if (keyCode == KeyEvent.KEYCODE_BACK) {
         
            if (downtime == 0) {
                downtime = event.getDownTime();
                Toast.makeText(this"再按一次退出!", Toast.LENGTH_SHORT).show();
                return true;
            } else {
                if (event.getDownTime() - downtime <= 2000) {//如果间隔大于2秒,则退出
                    finish();
                    return true;
                } else {
                    downtime = event.getDownTime();
                    Toast.makeText(this"再按一次退出!", Toast.LENGTH_SHORT).show();
                    return true;
                }
            }
        }
        return super.onKeyDown(keyCode, event);
    }


这样就完成了一个后退按钮连续两次按下才能退出的功能。其中时间间隔可以修改成你认为合适的值。


















转载于:https://www.cnblogs.com/linwoain/p/56488c1053d6323bd07d8ca117862816.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值