总的来说,实则是使用onKeyDown方法进行监听按钮点击事件,并作出相应处理,一共有两种方式实现该功能。
第一种是使用消息传递机制,使用Handle()传递消息的间隔时间内若进行了再次点击返回键则退出程序
代码如下:
private static boolean isExit = false;
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
isExit = false;
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){
if (keyCode == KeyEvent.KEYCODE_BACK ) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
private void exit() {
// TODO Auto-generated method stub
if(!isExit){
isExit = true;
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
mHandler.sendEmptyMessageDelayed(0, 2000);
}
else{
finish();
System.exit(0);
}
}
第二种方式是计算点击按钮的时间差
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
exit();
return false;
}
return super.onKeyDown(keyCode, event);
}
public void exit() {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
}
else {
finish();
System.exit(0);
}
}