思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态。定时器是每次用户按下返回键才去创建。
代码如下:
- /**
- * 菜单、返回键响应
- */
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if(keyCode == KeyEvent.KEYCODE_BACK)
- {
- exitBy2Click(); //调用双击退出函数
- }
- return false;
- }
- /**
- * 双击退出函数
- */
- private static Boolean isExit = false;
- private void exitBy2Click() {
- Timer tExit = null;
- if (isExit == false) {
- isExit = true; // 准备退出
- Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
- tExit = new Timer();
- tExit.schedule(new TimerTask() {
- @Override
- public void run() {
- isExit = false; // 取消退出
- }
- }, 2000); // 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
- } else {
- finish();
- System.exit(0);
- }
- }
其中onKeyDown()函数可以在菜单栏Source->Override/Implement Methods里找到,双击即可自动添加到代码中。
本文介绍了一种智能的退出机制,通过双击返回键来触发程序关闭,增加了用户体验并减少了误操作的可能性。具体实现包括创建定时器来监控用户行为,确保在2秒内无再次返回键操作后才执行退出指令。

958

被折叠的 条评论
为什么被折叠?



