`
ldl8818
  • 浏览: 125928 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

针对网上流传的"Android 再按一次后退键退出应用程序"方法改正

 
阅读更多

      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);
	}	
2
0
分享到:
评论
2 楼 q271281401 2012-07-02  
楼主,这个代码是不是应该放应用程序的主activity?
1 楼 istend 2012-05-15  
赞个,  虽然还没测试,我刚发现  这种推出方法   呵呵

相关推荐

    点击两下返回键退出当前应用

    在Android应用开发中,"点击两下返回键退出当前应用"是一种常见的用户交互设计,它提高了用户体验,使得用户能够快速且直观地退出应用程序。这个DEMO实现的功能是当用户连续两次按下返回键时,程序会识别到这一行为...

    Android移动应用开发习题答案.pdf

    Android 作为最流行的移动操作系统之一,拥有庞大的用户群体和丰富的第三方应用程序生态系统。为了帮助开发者更好地学习和掌握 Android 移动应用开发技术,本文将提供一份详细的习题答案,涵盖 Android 开发环境...

    android 完全退出应用程序实现代码

    在Android的默认行为中,用户可以通过点击后退键或者调用`finish()`方法来关闭单个Activity,但这并不意味着整个应用程序会完全退出,特别是当有多个Activity在栈中时。下面将详细介绍如何实现从任何Activity完全...

    基于Android的移动终端应用程序开发与研究.pdf

    Android操作系统是当前最流行的移动终端操作系统之一,由Google开发。Android操作系统具有开放、免费、可定制等特点,吸引了全球许多开发者的关注。基于Android的移动终端应用程序开发是当前移动互联网时代的热门...

    Android应用程序概述

    Android应用程序概述 Android操作系统是目前全球最流行的移动设备操作系统之一,尤其在智能手机和平板电脑市场占据了主导地位。Android系统以其开放源代码、丰富的定制性和强大的开发者社区为特点,吸引了无数用户...

    Android-AndroidActivity侧滑退出库

    在Android原生系统中,虽然可以通过点击设备的返回按钮或者程序内的回退图标来返回上一级界面,但侧滑退出手势则提供了一种更加流畅的用户体验。 描述 "Android Activity 侧滑退出库" 表明这个库是专为Android ...

    88个Android应用程序源码

    这个名为"88个Android应用程序源码"的压缩包提供了一系列实例,对于初学者来说,它们是深入理解Android编程概念和实践技巧的理想材料。以下是对这些源码可能涵盖的知识点的详细解释: 1. **活动(Activity)管理**...

    8个Android应用程序源代码

    1. **Android应用程序结构**:每一个Android应用都由一系列组件构成,包括Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)、ContentProvider(内容提供者)和Intent(意图)。通过研究源代码,...

    《Android应用程序开发与典型案例》完整版PDF-23章全.pdf

    Android一词原意指“机器人”,这一名称体现了其作为智能手机平台,能够承载多种功能载体的特性。自推出以来,Android已成为全球最流行的移动开发平台,受到众多手机厂商的追捧,并在移动电话智能化的过程中扮演了...

    Android应用程序开发宝典

    ### Android应用程序开发宝典知识点概览 #### 一、Android系统及开发环境搭建 ##### 1.1 Android系统概述 - **定义与历史**: Android是由Google公司开发的基于Linux内核的操作系统,最初由Andy Rubin创立,旨在为...

    Android应用框架原理与程序设计(第三版)

    《Android应用框架原理与程序设计(第三版)》是一本深度探讨Android开发核心框架的书籍,旨在帮助开发者深入了解Android系统的运作机制,提升应用程序的设计与实现能力。本书中文高清完整版,阅读体验优秀,适合...

    Android 应用开发与底层技术

    - **Android Debug Bridge (ADB)**:ADB是一种命令行工具,可以在计算机和Android设备之间建立桥梁,支持文件传输、应用程序调试等多种功能。 - **Hierarchy Viewer**:这是一个图形化工具,用于查看和调试应用程序...

    Android模仿乐淘的应用程序分析源码-IT计算机-毕业设计.zip

    这篇文档将深入解析《Android模仿乐淘的应用程序分析源码》这一项目,旨在为学习Android应用开发的学生提供宝贵的参考资料。这个项目是针对毕业设计而创建的,它涵盖了Android App开发的多个关键知识点,包括界面...

    Eclipse开发Android应用程序入门.docx

    要开发Android应用程序,需要选择合适的开发环境和工具,Eclipse是一种流行的集成开发环境,结合Android SDK,可以快速地开发和测试Android应用程序。 Eclipse的优点: * 跨平台支持,支持Windows、Mac和Linux操作...

    88个经典Android应用程序打包下载【精品】

    这个资源包包含了88个经典应用的源代码,对于初学者来说,这是一个宝贵的资料库,可以深入学习并理解Android应用程序的工作原理。 首先,我们要明白Android应用的基本结构。每个Android应用都是基于组件模型构建的...

    Android应用程序完整源代码(7个)

    在Android开发领域,掌握完整的应用程序源代码是提升技能和理解应用程序工作原理的关键。这个压缩包包含7个Android应用程序的源代码,提供了丰富的学习资源。这些源代码覆盖了Android开发的多个方面,对于初学者和...

Global site tag (gtag.js) - Google Analytics