个人觉得当用户按下后退键时,出现"再按一次退出"的提示防止误操作比弹出一个对话框是会更人性化的。话不多说上代码:

第一种:重写onKeyDown来监听:

  1. long waitTime = 2000;
  2. long touchTime = 0;
  3. @Override
  4. public boolean onKeyDown(int keyCode, KeyEvent event) {
  5. if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {
  6. long currentTime = System.currentTimeMillis();
  7. if((currentTime-touchTime)>=waitTime) {
  8. Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
  9. touchTime = currentTime;
  10. }else {
  11. finish();
  12. }
  13. return true;
  14. }
  15. return super.onKeyDown(keyCode, event);
  16. }

第二种是重写onBackPressed方法直接监听返回键:

  1. long waitTime = 2000;
  2. long touchTime = 0;
  3. @Override
  4. public void onBackPressed() {
  5. long currentTime = System.currentTimeMillis();
  6. if((currentTime-touchTime)>=waitTime) {
  7. Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
  8. touchTime = currentTime;
  9. }else {
  10. finish();
  11. }
  12. }

实现代码是一样的只是重写的方法不同罢了。

如果你需要同时重写这两个方法,可能要注意一些问题啦!系统先是onKeyDown,如果return true了,就不会onBackPressed啦!

好了,今天和大家分享了一个简单而又实用的功能。谢谢大家。

Android退出程序时的"再按一次退出"实现的更多相关文章

  1. Android 完全退出程序,以及再按一次返回键退出程序

    再按一次返回键退出最终完整方案: boolean isExit; @Override    protected void onCreate(Bundle savedInstanceState) {   ...

  2. 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotion模拟器

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. Android实现 再按一次退出 的三种方法 durationTime、timerTask 和Handler

    目前很多Android应用都会实现按返回键时提示“再按一次推退出” 在这篇文章中总结了各家的方法,一般都是监听Activity的onKeyDown 或者onBackPressed方法 方法一: 直接计 ...

  4. 关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题

     问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_ ...

  5. [转]Cordova Android 返回键拦截(backbutton)和退出(再点击一次跳出)

    本文转自:https://blog.csdn.net/aierJun/article/details/53944061 在Android原生webview里重写onBackPressed()就可以.@ ...

  6. Android开发时,那些相见恨晚的工具或网站!

    本文来我在知乎话题Android开发时你遇到过什么相见恨晚的工具或网站?下的回答! 在实际Android开发过程确实会有很多相见恨晚的工具或网站出现,下面是我自己的一些分享. 1.源码网站 https ...

  7. Android 运行时权限处理(from jianshu)

    https://www.jianshu.com/p/e1ab1a179fbb 翻译的国外一篇文章. android M 的名字官方刚发布不久,最终正式版即将来临! android在不断发展,最近的更新 ...

  8. 退出Android程序时清除所有activity的实现方法

    思路: 1. 自定义ActivityList管理类,添加删除维护该list; 2.Activity Stack 类似上面: 3.singleTask定义一个Activity为该启动模式,然后当返回时, ...

  9. 【转】关于Eclipse创建Android项目时,会多出一个appcompat_v7的问题

    问题描述: 使用eclipse创建一个Android项目时,发现project列表中会多创建出一个appcompat_v7项目,再创建一个Android项目时,又会再多出一个appcompat_v7_ ...

随机推荐

  1. 重学STM32---(四)

    今天把定时器看了一遍,觉得很有必要把记下来时常看一看 定时器3初始化,很简单,开时钟,装载ARR,PSC寄存器就行了,想要开什么中断在DIER寄存器设置就行了(不过当时我花了很长时间,用寄存器真的不熟 ...

  2. Python 读书系列

    1. 原文<A byte of Python> 翻译版:<<简明Python教程>> 2. Python:核心编程

  3. nginx+c+cgi开发

    http://blog.csdn.net/marising/article/details/3932938 1.Nginx 1.1.安装 Nginx 的中文维基 http://wiki.codemon ...

  4. 不要在类的函数中使用static字段

    昨天在做存储服务的压力测试,后台是采用多线程根据玩家唯一标识做线程划分的,在测试的过程中发现,进行存储的时候,会发生玩家数据错乱的情况. 一开始怀疑是上层逻辑在处理数据的时候发生了错乱,导致保存的时候 ...

  5. openvswitch——mac和vlan learning for ingress port

    对于普通的switch,都会有这个学习的过程,当一个包到来的时候,由于包里面有MAC,VLAN Tag,以及从哪个口进来的这个信息.于是switch学习后,维护了一个表格port –> MAC ...

  6. 我看的公开课系列--《TED:对无知的追求》 by stuart firestein

    http://open.sina.com.cn/course/id_1047/ What scientists do is not just collect data and collect fact ...

  7. 【转】BAT 延迟变量

    延迟环境变量在bat里是重中之重,虽然前面说过,熟练应用for才算会写批处理,但如果不懂延迟环境变量的话,那么你就只能写出简单的批处理,而for语句也不能发挥最大的作用. 延迟环境变量在cmd下默认是 ...

  8. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

  9. man page的介绍

    假设你知道一个命令名,但不知其使用方法,此时可以求助于在线求助系统,即使用man(manual)命令,如man date. 上图为执行man date语句后的结果.<翻页查看时可按空格键,退出m ...

  10. memcache 线程深入理解分析 及 源码研究

    http://blog.csdn.net/huithe/article/details/8006186