android延续按两次返回退出程序(完整代码)
android连续按两次返回退出程序(完整代码)
UserHelper
UserHelper
package com.hk.icie; public class UserHelper { private static Boolean isExit = false; public static Boolean getIsExit() { return isExit; } public static void setIsExit(Boolean isExit) { UserHelper.isExit = isExit; } }
ExitTimerTask
package com.hk.utils; import java.util.TimerTask; import com.hk.icie.UserHelper; public class ExitTimerTask extends TimerTask { @Override public void run() { UserHelper.setIsExit(false); } }Tab1Activity
// 此部分为了实现按两下返回退出 private Timer tExit = new Timer(); private ExitTimerTask exitTimerTask = new ExitTimerTask(); @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { if (!UserHelper.getIsExit()) { UserHelper.setIsExit(true); AlertUtils.ToastAlert(Tab1Activity.this, R.string.alert_exit); if (tExit != null) { if (exitTimerTask != null) { // 将原任务从队列中移除(必须的,否则报错) exitTimerTask.cancel(); } // 新建一个任务 exitTimerTask = new ExitTimerTask(); tExit.schedule(exitTimerTask, 2*1000); } } else { UserHelper.setIsExit(false); finish(); System.exit(0); } } return true; }需要注意的是每次放定时任务前,确保之前任务已从定时器队列中移除,每次放任务都要新建一个对象,否则出现一下错误:ERROR/AndroidRuntime(11761): java.lang.IllegalStateException: TimerTask is scheduled already,同一个定时器任务只能被放置一次。