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

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

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


    ① 首次按下后退按钮,设置一个标志,检查这个标志,如果为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);
    }


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


















posted @ 2014-04-28 15:12  linwoain  阅读(384)  评论(0编辑  收藏  举报