当我们想退出应用程序时,一般都会采用按物理按键(后退键)的做法,当用户在按两次后退键的时候就将应用程序退出,即销毁当前的Activity();

重写onBackPressed()方法即可:
代码如下:
     privateintclickCount=0;
      @Override
      publicvoidonBackPressed() {
            //TODOAuto-generated method stub
            //super.onBackPressed();
            
            if(clickCount< 1){
                  Toast.makeText(this,"再按一次后退键退出应用程序!",Toast.LENGTH_SHORT).show();
                  clickCount++;
            }else{
                  finish();
            }
      }
 
注意,需要将父类的onBackPressed()方法去掉,否则无论后面怎么写当按一次后退键的时候程序就会退出。
但这种写法有不好的地方,就是当用户在不小心按下两次后退键的时候都会退出,这样就不好,没有很好的用户体验。
为此我们将程序改进,当用户在按下第二次次退出键后如果和第一次之间的时间超过1s,我们就不将程序退出,视为无效的操作。
 
改进的代码如下:
privatelonglastClickTime= 0;
   @Override
      publicvoidonBackPressed() {
            //TODOAuto-generated method stub
            //super.onBackPressed();
      
      if(lastClickTime<= 0){
            Toast.makeText(this,"再按一次后退键退出应用程序!",Toast.LENGTH_SHORT).show();
            lastClickTime= System.currentTimeMillis();
      }else{
            longcurrentClickTime = System.currentTimeMillis();
            if(currentClickTime-lastClickTime< 1000){
                  finish();
            }else{
                  Toast.makeText(this,"再按一次后退键退出应用程序!",Toast.LENGTH_SHORT).show();
                  lastClickTime= currentClickTime;
            }
      }}

Android后退事件的处理的更多相关文章

  1. cocos2d-js实现 双击android后退按钮 即退出游戏

    之前测了一下android自带的后退按钮,用在cocos2d-js中是没有获取到的 (可能是cocos2d-js已经把android的后退事件截取了,所以原生java代码没有用), 没办法就只能用co ...

  2. Android Touch事件传递机制 二:单纯的(伪生命周期)

    转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...

  3. Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)

      ViewGroup View  Activity dispatchTouchEvent 有 有 有 onInterceptTouchEvent 有 无 无 onTouchEvent 有 有 有 例 ...

  4. Android View 事件分发机制 源码解析 (上)

    一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~ 首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个My ...

  5. Android Touch事件传递机制详解

    Android开发的朋友经常处理各种触摸事件,然而在触摸事件的传递过程中主要用到三个方法:dispatchTouchEvent().onInterceptTouchEvent()和onTouchEve ...

  6. Android touch 事件传递机制

    前言: (1)在自定义view的时候经常会遇到事件拦截处理,比如在侧滑菜单的时候,我们希望在侧滑菜单里面有listview控件,但是我们希望既能左右滑动又能上下滑动,这个时候就需要对触摸的touch事 ...

  7. Android touch事件的派发流程

    Android TouchEvent事件传递机制 通俗易懂,能够了解Touch事件派发的基本流程. Android中的dispatchTouchEvent().onInterceptTouchEven ...

  8. Android onTouch事件传递机制

    Android onTouch事件介绍: Android的触摸事件:onClick, onScroll, onFling等等,都是由许多个Touch组成的.其中Touch的第一个状态肯定是ACTION ...

  9. iOS 和 Android 触摸事件传递

    先看文章,写得很好 ios 触摸事件传递 http://www.cnblogs.com/Quains/p/3369132.html 另外一篇 http://blog.csdn.net/yongyinm ...

随机推荐

  1. 逆序对(inversion)

    逆序对(inversion) 题目描述 对于序列AA,它的逆序对数定义为满足i<ji<j,且Ai>AjAi>Aj 的数对i,ji,j的个数. 现给你11到nn的一个排列,并按照 ...

  2. 封装一个类似jquery的ajax方法

    //封装一个类似jquery的ajax方法,当传入参数,就可以发送ajax请求 //参数格式如下{ // type:"get"/"post", // dataT ...

  3. nodeJS(2)深了解: nodeJS 项目架构详解(app.js + Express + Http)

    简略了解:nodeJS 深了解(1): Node.js + Express 构建网站预备知识 环境: 环境: win7 + nodeJS 版本(node): 新建 nodeJS 项目: 名称为: te ...

  4. Java 学习(1): windows java 运行& 环境配置

    Java 文件的运行 如下,创建了一个 名为"HelloWorld.java" 的 Java 文件: public class HelloWorld { public static ...

  5. ios 瀑布流的那些事情

    转载: 屎壳郎情调-成长日记 首先要知道:瀑布流的核心就是要获取到图片的长宽 网上的很多例子都是加载本地图片的 对于新手而言 改成加载网络图片的确是有点压力的  因为本地的图片 我们是很容易就能获取到 ...

  6. web.config add handlers and httpmodule to System.Web section.

    <?xml version="1.0" encoding="utf-8"?> <!-- For more information on how ...

  7. Linux和Windows兼容

    1. 介绍 我们知道Linux上的应用程序是ELF格式的,而Windows则是PE格式 所以要解决这个问题首先二进制加载问题:其次,就是API问题,两者的API完全不同要实现兼容,就需要构建一个虚拟层 ...

  8. check source code after macro expand

    Some time I'd like check source code after macro expand. We can use -E option to stop after the prep ...

  9. CocoaPods Setting up CocoaPods master repo无反应时的处理

    Setting up CocoaPods master repo,半天没有任何反应.原因无他,因为那堵墙阻挡了cocoapods.org...gitcafe和oschina都是国内的服务器,可以用它们 ...

  10. [MySQL] xtrabakcup原理

    Xtrabackup InnoDB内部的Redo log, 也叫Transaction log file. 存储每一个InnoDB表纪录的修改日志. 当InnoDB启动时, InnoDB会检查数据文件 ...