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

 

posted @ 2014-09-23 16:17  q429786006  阅读(279)  评论(0编辑  收藏  举报