UserHelperjava
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; } }
ExitTimerTaskide
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); } }
Tab1Activitythis
// 此部分为了实现按两下返回退出 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,同一个定时器任务只能被放置一次。code