您好,登錄后才能下訂單哦!
前言
現在市面上很多應用都會有當用戶按返回鍵的時候提示用戶:再按一次將退出應用的提示,也就是雙擊雙擊返回鍵退出應用,接下來我們就用幾種辦法來實現這個功能
效果圖
實現
第一種辦法
響應Activity的 onKeyUp事件,兩次點擊時間大于2秒鐘就不響應,小于2秒鐘就退出程序
代碼:
//記錄用戶首次點擊返回鍵的時間 private long firstTime = 0; /** * 第一種解決辦法 通過監聽keyUp * @param keyCode * @param event * @return */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { long secondTime = System.currentTimeMillis(); if (secondTime - firstTime > 2000) { Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); firstTime = secondTime; return true; } else { System.exit(0); } } return super.onKeyUp(keyCode, event); }
第二種辦法
和第一種辦法一樣,這不過這次響應onKeyDown事件
代碼:
/** * 第二種辦法 * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { long secondTime = System.currentTimeMillis(); if (secondTime - firstTime > 2000) { Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); firstTime = secondTime; return true; } else { System.exit(0); } } return super.onKeyDown(keyCode, event); }
第三種辦法
直接重寫onBackPressed()方法
代碼:
/** * 第三種方法 */ @Override public void onBackPressed() { long secondTime = System.currentTimeMillis(); if (secondTime - firstTime > 2000) { Toast.makeText(MainActivity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); firstTime = secondTime; } else { System.exit(0); }
第四種辦法
通過線程延時的辦法實現,借助Timer
代碼:
/** * 第四種方法 */ @Override public void onBackPressed() { if (!mBackKeyPressed) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mBackKeyPressed = true; new Timer().schedule(new TimerTask() { @Override public void run() { mBackKeyPressed = false; } }, 2000); } else { this.finish(); System.exit(0); } }
第五種辦法
在onKeyUp()方法內使用Timer
/** * 第五種辦法 * @param keyCode * @param event * @return */ @Override public boolean onKeyUp(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { if (!mBackKeyPressed) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mBackKeyPressed = true; new Timer().schedule(new TimerTask() { @Override public void run() { mBackKeyPressed = false; } }, 2000); return true; } else { this.finish(); System.exit(0); } } return super.onKeyUp(keyCode, event); }
第六種辦法
在onKeyDown()方法內使用Timer
/** * 第六種辦法 * @param keyCode * @param event * @return */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { if (!mBackKeyPressed) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show(); mBackKeyPressed = true; new Timer().schedule(new TimerTask() { @Override public void run() { mBackKeyPressed = false; } }, 2000); return true; } else { this.finish(); System.exit(0); } } return super.onKeyDown(keyCode, event); }
OK,到此就結束了,原理都差不多。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。