android有时需要使用点击两次返回键退出应用的需求,这里我们简单做了一下,主要运用的hander延时发送,两秒内没有再次点击返回键就发送一个hander消息让全局变量boolean 类型的isClose变为false,点击了在两秒内,hander还没有发送消息让isClose变为false,所以就会执行isClose为true后面的逻辑,finish();
private boolean isClose = false;
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case 400:
isClose = false;
break;
}
}
};
/**
* 连续点两次退出的操作
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == event.KEYCODE_BACK){
exct();
return false;
}
return super.onKeyDown(keyCode, event);
}
private void exct(){
if(!isClose){
isClose = true;
Toast.makeText(MainActivity.this,"你确定要退出吗?",Toast.LENGTH_SHORT).show();
handler.sendEmptyMessageDelayed(400,2000);
}else{
finish();
}
}
这里还补充一下点击返回键弹出AlterDialog对话框,点击确认退出程序
/**
* 点击放回键弹出退出的方法
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == event.KEYCODE_BACK){
new AlertDialog.Builder(this).setTitle("您确定要退出吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setNegativeButton("取消",null).show();
}
return super.onKeyDown(keyCode, event);
}