我們?cè)谑褂密浖臅r(shí)候斗幼,經(jīng)常會(huì)遇見這種情況:點(diǎn)擊返回鍵,提示“再按返回鍵退出”抚垄。這是為了防止用戶的誤操作蜕窿,不小心按到返回鍵而直接退出應(yīng)用了,影響到剛才在應(yīng)用里的操作呆馁。連續(xù)兩次誤按返回鍵的幾率會(huì)小很多桐经,所以用連按兩次返回鍵來確認(rèn)用戶確實(shí)要退出程序。
在MainActivity(連續(xù)按兩次Back鍵要退出的Activity)里浙滤,重寫onKeyDown()或者onBackPressed()阴挣,兩種方法。
第一種方法:
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
toast("再按一次退出程序");
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}
第二種方法:
private boolean quit = false; //設(shè)置退出標(biāo)識(shí)
@Override
public void onBackPressed() {
if (!quit) { //詢問退出程序
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
new Timer(true).schedule(new TimerTask() { //啟動(dòng)定時(shí)任務(wù)
@Override
public void run() {
quit = false; //重置退出標(biāo)識(shí)
}
}, 2000); //2秒后運(yùn)行run()方法
quit = true;
} else { //確認(rèn)退出程序
super.onBackPressed();
finish();
}
}