一、监听back键,退出时弹出一个对话框,在Activity中重写 onKeyDown方法,代码如下:
@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 创建退出对话框
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
// 设置对话框标题
alertDialog.setTitle("系统提示:");
// 设置对话框消息
alertDialog.setMessage("亲你确定要退出该应用吗?");
// 添加选择按钮并注册监听
alertDialog.setButton("确定", listener);
alertDialog.setButton2("取消", listener);
// 显示对话框
alertDialog.show();
}
return false;
}
/** 监听对话框里面的button点击事件 */
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
switch (which) {
// "确认"按钮退出程序
case AlertDialog.BUTTON_POSITIVE:
finish();
break;
// "取消"第二个按钮取消对话框
case AlertDialog.BUTTON_NEGATIVE:
break;
default:
break;
}
}
};
二、监听back键,当慢点击back键时弹出一个Toast提示框,连续两次快点击back键时直接退出该应用,两种实现方式如下:
##2.1 重写onBackPressed() 方法:
@Override
public void onBackPressed() {
if (System.currentTimeMillis() - mPreBackTime < DOUBLE_CLICK_TIME_SUB) {
finish();
} else {
Toast.makeText(MainActivity.this, "再按一次返回键退出手机淘宝", Toast.LENGTH_SHORT).show();
mPreBackTime = System.currentTimeMillis();
}
}
##2.2 重写onKeyDown( ) 方法:
//连续两次按back键的指定时长差值
private static final int DOUBLE_CLICK_TIME_SUB = 1000;
//前一次按back键的时间
private long mPreBackTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if (System.currentTimeMillis() - mPreBackTime < DOUBLE_CLICK_TIME_SUB) {
super.onKeyDown(keyCode, event);
} else {
Toast.makeText(MainActivity.this, "再按一次返回键退出手机淘宝", Toast.LENGTH_SHORT).show();
mPreBackTime = System.currentTimeMillis();
}
return true;
}
return super.onKeyDown(keyCode, event);