监听back按键,再次点击退出应用

1、使用handler的延时发送Message机制,达到”再次点击退出“ 效果
sendEmptyMessageDelayed(int,int);
参一: 需要传递的值 ; 参二:延迟多少毫秒发送
handler 为全局属性

 // 标记是否连续点击 back
    boolean isContinuous = false;

    Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            isContinuous = false;
        }
    };

该方法中判断是否退出应用

 public void exitApp(){
        if(isContinuous){
            finish();
        }else {
            isContinuous = true;//设置连续点击标记为true
            Toast.makeText(this,"再按一次退出程序",Toast.LENGTH_LONG).show();
            //如果两次点击之间间隔超过2000毫秒,则会发送message,在handler中重新对标记设置为false
            **mHandler.sendEmptyMessageDelayed(0,2000);**
        }
    }

在Activity重写onKeyDown()方法,在onKeyDown()中调用 exitApp()方法

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode== KeyEvent.KEYCODE_BACK){
            exitApp();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

2、利用System.currentTimeMillis() 对比。 根据 现在点击back时的时间之前点击back时的时间差值 判断是否大于预设值。

long firtstTime = 0;
  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode== KeyEvent.KEYCODE_BACK){
           long secondTime = System.currentTimeMillis();   
             if (secondTime - firstTime > 2000) {                                                              //如果两次按键时间间隔大于2秒,则不退出  
                 Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();   
                 firstTime = secondTime;//更新firstTime  
                 return true;   
             } else {                                                    //两次按键小于2秒时,退出应用  
            System.exit(0);  
             }   
        }

        return super.onKeyDown(keyCode, event);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值