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