一、監聽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);