在開發(fā)中經(jīng)常需要的一個需求就是退出應(yīng)用程序,那么現(xiàn)在一般就是兩種情況尘喝,一磁浇、主要是點(diǎn)擊返回鍵,彈出提示框朽褪,是否退出應(yīng)用置吓,如:UC瀏覽器,獵豹瀏覽器等缔赠,二衍锚、主要是在一定的時間間隔之內(nèi)雙擊,便可退出應(yīng)用嗤堰。一般主要寫在BaseActivity(父類)里面
我們今天主要做的就是第二種方式退出應(yīng)用戴质。
當(dāng)然了,這種方式有許多種方式踢匣,這里介紹兩種:
1告匠、直接使用System.currentTimeMillis() 方式進(jìn)行判斷
代碼如下
<1>重寫onKeyDown()方法
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
/*判斷用戶是否點(diǎn)擊了“返回鍵”*/
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進(jìn)行判斷時間間隔
代碼如下:
<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秒鐘內(nèi)沒有按下返回鍵离唬,則啟動定時器取消掉剛才執(zhí)行的任務(wù)
} 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后专、這兩種情況都滿足退出應(yīng)用的需要。好了這里就是記錄一下输莺,給自己補(bǔ)充一下知識點(diǎn)戚哎。