Android 雙擊返回鍵退出程序的方法總結(jié)
下面先說說LZ思路,具體如下:
1. 第一種就是根據(jù)用戶點(diǎn)擊倆次的時(shí)間間隔去判斷是否退出程序;
2. 第二種就是使用Android中計(jì)時(shí)器(Timer),其實(shí)這倆種都差不多.
思路是有了,,,接下來要怎么開搞呢???用戶點(diǎn)擊肯定會(huì)觸發(fā)相應(yīng)的事件,,,我們先來看下面?zhèn)z個(gè)事件的作用。。。
Activity.onKeyDown();
當(dāng)某個(gè)鍵被按下時(shí)會(huì)觸發(fā),但不會(huì)被任何的該Activity內(nèi)的任何view處理。
默認(rèn)按下KEYCODE_BACK鍵后會(huì)回到上一個(gè)Activity。
Activity.onKeyUp():
當(dāng)某個(gè)按鍵被按下,松開后觸發(fā),但不會(huì)被任何的該Activity內(nèi)的任何view處理。
默認(rèn)沒有執(zhí)行任何操作,只是簡(jiǎn)單的給一個(gè)false作為返回值。
So,,,接下來分別使用如上倆個(gè)方法干掉這個(gè)當(dāng)年的攔路虎~
One Way:onKeyUp()
//--------------使用onKeyUp()干掉他-------------- //記錄用戶首次點(diǎn)擊返回鍵的時(shí)間 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()干掉他-------------- //記錄用戶首次點(diǎn)擊返回鍵的時(shí)間 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秒鐘內(nèi)沒有按下返回鍵,則啟動(dòng)定時(shí)器取消掉剛才執(zhí)行的任務(wù) }else{ finish(); System.exit(0); } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注