针对网上流传的"Android 再按一次后退键退出应用程序"方法改正
来源:互联网 发布:程序员的浪漫'' 编辑:程序博客网 时间:2024/05/16 15:00
Android中用户要退出应用程序,看到大部分退出应用程序的做法是:弹出一个对话框,用户点了确定后退出。个人觉得这用户体验有点不好,手指还要往屏幕中间移动再点击。用户按了一次后退键,这可能用户是误按了后退键,并不想直接退出程序,给用户提示”再按一次后退键退出应用程序“,如果用户真想退出,直接再按一次后退键即可退出整个应用程序。
网上有好多实现方法,看到大部分人博客转的方法如下:
- private static Boolean isExit = false;
- private static Boolean hasTask = false;
- Timer tExit = new Timer();
- TimerTask task = new TimerTask() {
- @Override
- public void run() {
- isExit = false;
- hasTask = true;
- }
- };
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if(isExit == false ) {
- isExit = true;
- Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();
- if(!hasTask) {
- tExit.schedule(task, 2000);
- }
- } else {
- finish();
- System.exit(0);
- }
- }
- return false;
- }
看这逻辑,测试了下,如果用户第一次按了后退键,等2s再按一次后退键,再等2s再按一次后退键,第三次就直接退出了。看来这段代码只能实现用户第一次按后退键,2s之内再按后退键退出程序的功能而已。
我把它改了下:
- private static Boolean isExit = false;
- Timer tExit = new Timer();
- MyTimerTask task;
- class MyTimerTask extends TimerTask{
- @Override
- public void run() {
- isExit = false;
- }
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if(isExit == false ) {
- isExit = true;
- Toast.makeText(this, "再按一次后退键退出应用程序", Toast.LENGTH_SHORT).show();
- if(task!=null)
- task.cancel(); //将原任务从队列中移除
- task = new MyTimerTask();// 新建一个任务
- tExit.schedule(task, 2000);
- } else {
- finish();
- System.exit(0);
- }
- }
- return false;
- }
以上经常测试,功能正常。
还有一种简便方法:
- private long exitTime = 0;
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if(keyCode == KeyEvent.KEYCODE_BACK
- && event.getAction() == KeyEvent.ACTION_DOWN){
- if((System.currentTimeMillis()-exitTime) > 2000){
- Toast.makeText(getApplicationContext(), "再按一次后退键退出程序", Toast.LENGTH_SHORT).show();
- exitTime = System.currentTimeMillis();
- } else {
- //退出代码
- }
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- 针对网上流传的"Android 再按一次后退键退出应用程序"方法改正
- 针对网上流传的 Android 再按一次后退键退出应用程序方法改正
- android 再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- Android 实现再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- Android 实现再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- Android 实现再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- Android再按一次后退键退出应用程序
- android 再按一次后退键退出应用程序
- Android再按一次后退键退出
- Android实现再按一次退出应用程序的方法
- SequenceFile在Hadoop中使用
- java 学习步骤-_- (06年的贴子啦),不错
- 3.asm-汇编的补码和负数互换
- 面向对象技术在软件重用和体系结构中的应用
- 判断adodb php执行insert或update是否成功
- 针对网上流传的"Android 再按一次后退键退出应用程序"方法改正
- web开发技术初探
- Struts2让一个类成为一个Action的3种方式
- asp.net:web.config详解
- hdu 3255 Farming(矩形面积并 多种矩形)
- Qt内存管理
- 小猫丢了后
- 从决策树学习 谈到贝叶斯分类算法
- eclipse在线安装hibernatetools