Android實現雙擊退出應用

private boolean flag = true;

private static final intWHAT_RESET_BACK=1;

privateHandlerhandler=newHandler() {

@Override

public voidhandleMessage(Message msg) {

switch(msg.what) {

caseWHAT_RESET_BACK:

flag=true;

break;

???? }

?? }

};

@Override

public booleanonKeyUp(intkeyCode, KeyEvent event) {

if(keyCode == KeyEvent.KEYCODE_BACK&&flag) {

Toast.makeText(this,"再點擊一次,退出應用", Toast.LENGTH_SHORT).show();

flag=false;?? //第一次點擊進來把flag的值賦為false,第二次點擊的時候由于if()里面的條件 不 成立,則直接走最后一步退出

handler.sendEmptyMessageDelayed(WHAT_RESET_BACK,2000);

return true;????? //返回true不退出,不走最后一步,所以不退出應用

??? }

return super.onKeyUp(keyCode, event);//退出

?}

思路解釋:

首先需要在MainActivity里面重寫onKeyUp方法:

keyCode == KeyEvent.KEYCODE_BACK && flag? 判斷是否按了手機上的返回鍵? flag默認為true

private boolean flag = true;????? //聲明一個boolean值,默認為true

然后使用Handler發送一個延遲2秒的消息:

//兩秒后發送一個消息,如果兩秒內點擊了兩次的話,就直接跳最后一步退出應用,因為第一次進來的時候已經把flag的值設為false

// if()里面的條件不成立,所以直接跳最后一步(return super.onKeyUp(keyCode, event);//退出)

handler.sendEmptyMessageDelayed(WHAT_RESET_BACK,2000);

//如果兩秒內沒有點擊第二次的話,發送消息就執行下面代碼

case WHAT_RESET_BACK :

flag=true;?????? //把值設為恢復為true,兩秒后再次點擊進來就不會執行? return super.onKeyUp(keyCode, event);,等于又重新認為你是第一次點擊

break;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容