標籤:
第一種:利用線程延時實現:
private int mBackKeyPressedTimes = 0;
@Override public void onBackPressed() { if (mBackKeyPressedTimes == 0) { Toast.makeText(this, "再按一次退出程式 ", Toast.LENGTH_SHORT).show(); mBackKeyPressedTimes = 1; new Thread() { @Override public void run() { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } finally { mBackKeyPressedTimes = 0; } } }.start(); return; else{ this.activity.finish(); } } super.onBackPressed(); }
第二種:利用計算時間差實現 (個人覺得這種方式較為簡單,而且不容易發生異常,代碼較為安全)
private long exitTime = 0;
public void ExitApp()
{
if ((System.currentTimeMillis() - exitTime) > 2000)
{
Toast.makeText(this.activity, "再按一次退出程式", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else
{
this.activity.finish();
}
}
第三種方法
- /**
- * 菜單、返回鍵響應
- */
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if(keyCode == KeyEvent.KEYCODE_BACK)
- {
- exitBy2Click(); //調用雙擊退出函數
- }
- return false;
- }
- /**
- * 雙擊退出函數
- */
- private static Boolean isExit = false;
-
- private void exitBy2Click() {
- Timer tExit = null;
- if (isExit == false) {
- isExit = true; // 準備退出
- Toast.makeText(this, "再按一次退出程式", 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雙擊返回鍵退出Activity的方法