// 是否退出程序 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。原理就是这么简单~