// 是否退出程序
private static Boolean isExit = false;
// 定時觸發器
private static Timer tExit = null;
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (isExit == false) {
isExit = true;
if (tExit != null) {
tExit.cancel(); // 將原任務從隊列中移除
}
// 重新實例一個定時器
tExit = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
isExit = false;
}
};
Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
// 延時兩秒觸發task任務
tExit.schedule(task, 2000);
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyUp(keyCode, event);
}
原理很簡單:定義一個TimerTask定時器和一個是否退出程序的標識isExit,第一次按返回鍵,賦值isExit標識爲true,開啓定時器TimerTask 任務,兩秒鐘後賦值isExit標識爲false,所以用戶在這兩秒中內再按一次返回鍵,則退出程序。否則定時器TimerTask任務執行,標誌爲false。原理就是這麼簡單~