前言

  有一个很古老的应用技巧,一直被各种大大小小的app用得乐此不疲,那就是双击返回键退出程序。今天就写写它的实现代码,非常简单而且实用。

正文

  双击返回键退出程序,一般有两种实现思路,一种是用一个布尔值变量来记录按键事件,并通过线程延时来实现效果;另外一种是直接通过记录按键时间计算时间差实现功能,现在就跟大家分享下代码吧、O(∩_∩)O哈哈~

1、利用线程延时实现

private static boolean mBackKeyPressed = false;//记录是否有首次按键

@Override
public void onBackPressed() {
  if(!mBackKeyPressed){
    Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    mBackKeyPressed = true;
    new Timer().schedule(new TimerTask() {//延时两秒,如果超出则擦错第一次按键记录
      @Override
      public void run() {
        mBackKeyPressed = false;
      }
    }, 2000);
  }
  else{//退出程序
    this.finish();
    System.exit(0);
  }
}

通过 mBackKeyPressed  来记录是否有首次按返回键的记录,如果不存在首次按键记录,则Toast提示,并记录首次按键记录,并启动线程在2秒后擦除该按键记录。如果在线程海内擦除mBackKeyPressed 时又按下返回键,则执行else里面的语句退出程序。

2、通过计算时间差实现

private long mPressedTime = 0;

@Override
public void onBackPressed() {
  long mNowTime = System.currentTimeMillis();//获取第一次按键时间
  if((mNowTime - mPressedTime) > 2000){//比较两次按键时间差
    Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
    mPressedTime = mNowTime;
  }
  else{//退出程序
    this.finish();
    System.exit(0);
  }
}

这里是通过控制时间差来实现功能的,在首次按下返回键时,将会将当期时间赋值给mPressedTime并通过Toast提示用户,在第二次按下返回键时,如果与 mPressedTime记录的时间差值大于2秒则重新刷新mPressedTime的时间,如果小于2秒则执行else的语句退出程序。

PS:个人比较建议用时间差的方式来实现这个功能,因为代码的简单与稳定性都比线程延时相对好很多。

如果有更好的实现方式,欢迎大家一起探讨哈~

作者:enjoy风铃
出处:http://www.cnblogs.com/net168/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则下次不给你转载了。

Android应用系列:双击返回键退出程序的更多相关文章

  1. android双击返回键退出程序

    今天给大家简单说一下,android双击返回键退出程序. @Override public boolean onKeyDown(int keyCode, KeyEvent event) {      ...

  2. WP8.1应用双击返回键退出程序。

    #region 双击退出程序代码 //双击HardwareButtons.BackPressed: //出现退出提示窗口: //“确定”退出,“取消”返回什么也不做: private async vo ...

  3. android双击返回键退出程序的实现

    /** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-gen ...

  4. PhoneGap API 之事件处理_双击返回键退出程序

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. Android 监听返回键退出程序的两种实现

    1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定 ...

  6. Android中的“再按一次返回键退出程序”实现 (转) 按返回键退出程序时进行提醒

    原文地址: https://blog.csdn.net/xichenguan/article/details/47030303 最近在研究   Android  编程方面的东西, 有了以下发现,  该 ...

  7. android 点击返回键退出程序的方法

    android 点击返回键退出程序的方法 第一种: 再按一次返回键退出程序 private long exitTime = 0; @Override public boolean onKeyDown( ...

  8. Android中的“再按一次返回键退出程序”实现

    用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dial ...

  9. WP8.1 双击两次返回键退出程序

    在实现Windows Phone上实现点按两次返回键退出程序, 一种方法是使用Coding4Fun提供的ToastPrompt, 使用方法如下: 1. 安装引用, 打开Package Manager ...

随机推荐

  1. Debian 使用 Samba 服务为 Windows 客户端和 Linux 客户端提供文件服务

    1 目标 1.1 主机采用 Debian,为 Windows 和 Liunx 客户端提供文件存取服务 1.2 Windows 采用 GB2312 编码,Linux 采用 UTF-8 编码,要求中文不出 ...

  2. Matching Networks for One Shot Learning

    1. Introduction In this work, inspired by metric learning based on deep neural features and memory a ...

  3. Linux环境下java开发环境搭建一 JDK搭建

    第一步:下载jdk压缩文件 第二步:上传到家目录下的soft目录下,可以采用winscp,此处下载的是.tar.gz文件 第三步:解压压缩文件,并在/usr/local目录下创建一个jdk7的目录,并 ...

  4. Oracle异常:Caused by: java.sql.SQLException: ORA-01536: 超出表空间 '登录名' 的空间限额 (JPA保存数据)

    原因: Oracle表空间为0,没有分配空间内存. 解决办法在代码框里: 1. 查看用户表空间的限额 select * from user_ts_quotas; max_bytes字段就是了 -1是代 ...

  5. scp复制文件到指定端口

    1.scp基本格式 scp file user@host:/dir 2.scp复制文件到指定端口 scp默认连接的端口是22端口,如果ssh不是使用标准的22端口则使用-P(P大写)指定: scp - ...

  6. adb Android Debug Bridge 安卓调试桥

    adb devices 获取设备列表及设备状态 adb get-state 获取设备的状态,设备的状态有 3 钟,device , offline , unknown device:设备正常连接 of ...

  7. TensorFlow环境搭建

    1.使用pip安装TensorFlow 第一步安装pip: 先安装python 官网下载地址https://www.python.org在里面选择适合自己的版本 安装python的过程中pip也会随之 ...

  8. Note of Python Turtle

    Note of Python Turtle         Turtle 库函数是 Python语言中一个流行的绘图函数库.Turtle 意思是海龟,在Python中显示为一个小箭头,通过它的移动而留 ...

  9. 如何将uniurlframe中html调用delphi的函数

    uniGUI总群中台中cmj朋友为我们总结了如下内容,对于利用delphi+uniGUI开发应用,可以说是精品,必须掌握. 一句话,如何在html与delphi间交互代码,是最好的答案. [Clien ...

  10. git 中Pull/Request 的初步

    1. 目的: pull/request (简称PR) 是 项目管理者(管理者)和项目开发者(开发者)之间提交和确认工作成果的机制. 2. 流程: 开发者: 在本地创建特性分支. > git ch ...