Android 再按一次退出

有两种方法:

  1).第一次点击的时候标记一下状态,提示再按一次退出,然后开始计时,如果超过3秒没有再次按返回,一切状态归零,反之,如果3秒内再次按返回键则进行退出。

    boolean isExit = false;
    int time = 0;

    @Override
    public boolean back() {
        // TODO Auto-generated method stub
        if (!isExit) {
            isExit=true;
            final Timer timer = new Timer();
            timer.schedule(new TimerTask() {
                @Override
                public void run() {
                    // TODO Auto-generated method stub
                        time++;
                        if (time == 3) {
                            isExit = false;
                            time=0;
                            timer.cancel();
                        }                        
                        System.out.println(time+"");
                }
            }, 0,1000);
            showMsg("再按一次退出");
        } else if (isExit && time < 3) {
            finish();
        }
        return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK){
            return back();
        }
        return super.onKeyDown(keyCode, event);
    }

 

  2).第一次点击的时候记下当前时间,第二次点击的时候取当前时间和上次记录的时间做差,如果小于3秒则退出,反之将此次时间赋给标记时间,提示再按一次退出。

    long lastTime;
    @Override
    public boolean back() {
        long currTime=System.currentTimeMillis();
        if(currTime-lastTime>3000){
            showMsg("再按一次退出");
            lastTime=currTime;
        }else{
            finish();
        }
        return false;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        if(keyCode==KeyEvent.KEYCODE_BACK){
            return back();
        }
        return super.onKeyDown(keyCode, event);
    }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。