Android 双击返回键退出程序的方法总结

发布时间 - 2026-01-11 01:45:02    点击率:

Android 双击返回键退出程序的方法总结

下面先说说LZ思路,具体如下:

1. 第一种就是根据用户点击俩次的时间间隔去判断是否退出程序;

2. 第二种就是使用Android中计时器(Timer),其实这俩种都差不多.

思路是有了,,,接下来要怎么开搞呢???用户点击肯定会触发相应的事件,,,我们先来看下面俩个事件的作用。。。

Activity.onKeyDown();

当某个键被按下时会触发,但不会被任何的该Activity内的任何view处理。

默认按下KEYCODE_BACK键后会回到上一个Activity。

Activity.onKeyUp():

当某个按键被按下,松开后触发,但不会被任何的该Activity内的任何view处理。

默认没有执行任何操作,只是简单的给一个false作为返回值。

So,,,接下来分别使用如上俩个方法干掉这个当年的拦路虎~

One Way:onKeyUp()

  //--------------使用onKeyUp()干掉他--------------

  //记录用户首次点击返回键的时间
  private long firstTime=0;

  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode){
      case KeyEvent.KEYCODE_BACK:
        long secondTime=System.currentTimeMillis();
        if(secondTime-firstTime>2000){
          Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyUp",Toast.LENGTH_SHORT).show();
          firstTime=secondTime;
          return true;
        }else{
          System.exit(0);
        }
        break;
    }
    return super.onKeyUp(keyCode, event);
  }

Two Way:onKeyDown()

 //--------------使用onKeyDown()干掉他--------------

  //记录用户首次点击返回键的时间
  private long firstTime=0;

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK && event.getAction()==KeyEvent.ACTION_DOWN){
      if (System.currentTimeMillis()-firstTime>2000){
        Toast.makeText(MainActivity.this,"再按一次退出程序--->onKeyDown",Toast.LENGTH_SHORT).show();
        firstTime=System.currentTimeMillis();
      }else{
        finish();
        System.exit(0);
      }
      return true;
    }
    return super.onKeyDown(keyCode, event);
  }

Three Way:Timer

 @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_BACK){
      exitByDoubleClick();
    }
    return false;
  }

  private void exitByDoubleClick() {
    Timer tExit=null;
    if(!isExit){
      isExit=true;
      Toast.makeText(MainActivity.this,"再按一次退出程序--->Timer",Toast.LENGTH_SHORT).show();
      tExit=new Timer();
      tExit.schedule(new TimerTask() {
        @Override
        public void run() {
          isExit=false;//取消退出
        }
      },2000);// 如果2秒钟内没有按下返回键,则启动定时器取消掉刚才执行的任务
    }else{
      finish();
      System.exit(0);
    }
  }

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 双击返回键退出程序  # 双击退出程序的方法  # Android 单双击实现的方法步骤  # Android实现双击返回键退出应用实现方法详解  # Android双击事件拦截方法  # Android使用PhotoView实现图片双击放大单击退出效果  # Android 双击Back键退出应用的实现方法  # Android实现双击TitleBar回顶部的功能示例代码  # Android 在viewPager中双指缩放图片双击缩放图片单指拖拽图片的实现思路  # Android中双击返回键退出应用实例代码  # Android 高仿微信朋友圈动态支持双击手势放大并滑动查看图片效果  # Android 自定义View实现单击和双击事件的方法  # Android 屏幕双击事件的捕获简单示例  # Android 实现双击退出的功能  # Android App中实现可以双击放大和缩小图片功能的实例  # Android实现ImageView图片双击放大及缩小  # Android双击退出的实现方法  # Android双击返回键退出程序的实现方法  # 使用python编写android截屏脚本双击运行即可  # Android开发实现控件双击事件的监听接口封装类  # 按下  # 再按  # 首次  # 计时器  # 希望能  # 双击  # 谢谢大家  # 后会  # 第二种  # 第一种  # 返回值  # 判断是否  # 这俩  # 当年  # 先说说  # 肯定会  # 都差不多  # KEYCODE_BACK  # class  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 大学网站设计制作软件有哪些,如何将网站制作成自己app?  长沙企业网站制作哪家好,长沙水业集团官方网站?  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  制作旅游网站html,怎样注册旅游网站?  Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优  如何在香港服务器上快速搭建免备案网站?  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何快速使用云服务器搭建个人网站?  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  EditPlus 正则表达式 实战(3)  Linux系统运维自动化项目教程_Ansible批量管理实战  如何确保FTP站点访问权限与数据传输安全?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  如何将凡科建站内容保存为本地文件?  如何快速搭建自助建站会员专属系统?  ,交易猫的商品怎么发布到网站上去?  深圳网站制作平台,深圳市做网站好的公司有哪些?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  个人网站制作流程图片大全,个人网站如何注销?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  如何在万网主机上快速搭建网站?  制作电商网页,电商供应链怎么做?  Laravel Admin后台管理框架推荐_Laravel快速开发后台工具  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  北京企业网站设计制作公司,北京铁路集团官方网站?  Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践  用yum安装MySQLdb模块的步骤方法  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  javascript读取文本节点方法小结  Laravel如何实现文件上传和存储?(本地与S3配置)  如何快速登录WAP自助建站平台?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程