android连续按两次返回退出程序(完整代码)
16lz
2022-03-13
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 {@Overridepublic void run() {UserHelper.setIsExit(false);}}Tab1Activity
// 此部分为了实现按两下返回退出private Timer tExit = new Timer();private ExitTimerTask exitTimerTask = new ExitTimerTask();@Overridepublic 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,同一个定时器任务只能被放置一次。
更多相关文章
- Android(安卓)AsyncTask Download
- android 实现定时器
- Activity的四种启动方式
- Android(安卓)Looper中的MessageQueue消息处理机制
- Java(Android)线程池
- Android之AlarmManager定时器
- Android中的自动朗读(TTS)
- Android(安卓)中文 API (101) —— AsyncTask
- Android官方技术文档翻译——Gradle 插件用户指南(7)