1. 程式人生 > >雙擊退出(再按一次退出)應用

雙擊退出(再按一次退出)應用

# 簡介

在開發中經常需要的一個需求就是退出應用程式,那麼現在一般就是兩種情況,一、主要是點選返回鍵,彈出提示框,是否退出應用,如:UC瀏覽器,獵豹瀏覽器等,二、主要是在一定的時間間隔之內雙擊,便可退出應用。一般主要寫在BaseActivity(父類)裡面

  我們今天主要做的就是第二種方式退出應用。  當然了,這種方式有許多種方式

# 程式碼分析

## 1、直接使用System.currentTimeMillis() 方式進行判斷

> 程式碼如下

<1>重寫onKeyDown()方法

 ```         private long exitTime = 0;

    @Override     public boolean onKeyDown(int keyCode, KeyEvent event) {         /*判斷使用者是否點選了“返回鍵”*/         if (keyCode == KeyEvent.KEYCODE_BACK)

        {             if ((System.currentTimeMillis() - exitTime) > 2000) {                 Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();                 exitTime = System.currentTimeMillis();             } else {                 finishAll();                 System.exit(0);                 Process.killProcess(Process.myPid());             }             return true;         }         return super.onKeyDown(keyCode, event);     }

``` ## 2、使用定時器Timer進行判斷時間間隔 > 程式碼如下:

<2>重寫onKeyDown()方法

```

    @Override      public boolean onKeyDown(int keyCode, KeyEvent event) {        if(keyCode==KeyEvent.KEYCODE_BACK){          exitAPP();        }          return false;      }          private boolean isExitApp;     private void exitAPP() {         Timer timer = null;         if (!isExitApp) {             isExitApp = true;             Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();             timer = new Timer();             timer.schedule(new TimerTask() {                 @Override                 public void run() {                     isExitApp = false;//取消退出                 }             }, 2000);// 如果2秒鐘內沒有按下返回鍵,則啟動定時器取消掉剛才執行的任務         } else {             finishAll();             System.exit(0);             Process.killProcess(Process.myPid());         }     }

    //新增的父類退出時finish全部     public static void finishAll() {         List<BaseActivity> copy;         synchronized (mActivities) {             copy = new ArrayList<BaseActivity>(mActivities);         }         for (BaseActivity activity : copy) {             activity.finish();         }     }

```

>3、這兩種情況都滿足退出應用的需要。好了這裡就是記錄一下,給自己補充一下知識點。

# 總結