您好,登錄后才能下訂單哦!
Android應用中怎么實現一個雙擊返回鍵退出程序功能?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
具體如下:
1. 第一種就是根據用戶點擊倆次的時間間隔去判斷是否退出程序;
2. 第二種就是使用Android中計時器(Timer),其實這倆種都差不多.
思路是有了,,,接下來要怎么開搞呢???用戶點擊肯定會觸發相應的事件,,,我們先來看下面倆個事件的作用。。。
Activity.onKeyDown();
當某個鍵被按下時會觸發,但不會被任何的該Activity內的任何view處理。
默認按下KEYCODE_BACK鍵后會回到上一個Activity。
Activity.onKeyUp():
當某個按鍵被按下,松開后觸發,但不會被任何的該Activity內的任何view處理。
默認沒有執行任何操作,只是簡單的給一個false作為返回值。
So,,,接下來分別使用如上倆個方法干掉這個當年的攔路虎~
One Way:onKeyUp()
//--------------使用onKeyUp()干掉他-------------- //記錄用戶首次點擊返回鍵的時間 private long firstTime=0; @Override public boolean onKeyUp(int keyCode, KeyEvent event) { switch (keyCode){ case KeyEvent.KEYCODE_BACK: long secondTime=System.currentTimeMillis(); if(secondTime-firstTime>2000){ Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyUp",Toast.LENGTH_SHORT).show(); firstTime=secondTime; return true; }else{ System.exit(0); } break; } return super.onKeyUp(keyCode, event); }
Two Way:onKeyDown()
//--------------使用onKeyDown()干掉他-------------- //記錄用戶首次點擊返回鍵的時間 private long firstTime=0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_DOWN){ if (System.currentTimeMillis()-firstTime>2000){ Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyDown",Toast.LENGTH_SHORT).show(); firstTime=System.currentTimeMillis(); }else{ finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event); }
Three Way:Timer
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK){ exitByDoubleClick(); } return false; } private void exitByDoubleClick() { Timer tExit=null; if(!isExit){ isExit=true; Toast.makeText(MainActivity.this,"再按一次退出程序--->Timer",Toast.LENGTH_SHORT).show(); tExit=new Timer(); tExit.schedule(new TimerTask() { @Override public void run() { isExit=false;//取消退出 } },2000);// 如果2秒鐘內沒有按下返回鍵,則啟動定時器取消掉剛才執行的任務 }else{ finish(); System.exit(0); } }
看完上述內容,你們掌握Android應用中怎么實現一個雙擊返回鍵退出程序功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。