您的位置:首页 > 其它

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

2015-10-22 16:06 316 查看
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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: