当前位置: 首页 > news >正文

连续点击返回键退出Android 应用

问题

业务需要,在主界面连续点击返回键退出应用,记录一下。

解决方案

先说结论,在主界面Activity中添加如下代码

  /*** 记录上次点击返回键时间*/private long lastClickTime = 0;/*** 两次回退点击时间间隔设置不小于2s*/public static final long TIME_INTERVAL = 2000;......@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {exitApp();return false;}return super.onKeyDown(keyCode, event);}/*** 应用退出*/private void exitApp() {if (System.currentTimeMillis() - lastClickTime > TIME_INTERVAL) {//距离上次退出时间超过默认间隔时间,则认为不是连续点击,并记录新的点击时间Toast.makeText(this, "连续两次点击退出应用",Toast.LENGTH_SHORT).show();lastClickTime = System.currentTimeMillis();} else {this.finish();System.exit(0);}}......
  • 1、 新增变量lastClickTime 记录上次点击返回键时间。
  • 2、 新增时间间隔常量 TIME_INTERVAL
  • 3、 在回调方法 onKeyDown 中监听每次点击返回键。
  • 4、 一旦点击返回键,且距离上次点击事件小于TIME_INTERVAL(这里设为两秒,实际可根据业务自行调整),则认为连续点击,退出应用。否则吐司弹窗提示,并记录最新点击时间。

混合开发应用的场景补充
  • 在某些混合开发的App中,主界面由WebView控件构成,则需要考虑在每次点击返回键时,判断是否存在可回退Web页面。
  • 如果有可回退Web页面,先回退网页,再判断是否连续点击退出应用。

代码如下:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {// 是否可以回退网页if (keyCode == KeyEvent.KEYCODE_BACK) {if (webView.canGoBack()) {webView.goBack();return true;} else {exitApp();return false;}}return super.onKeyDown(keyCode, event);}

http://www.lryc.cn/news/33351.html

相关文章:

  • 【PyTorch】教程:torch.nn.Hardswish
  • nacos源码入门
  • 【记录】Samba|Windows 11的Samba连接切换用户
  • vue hiprint vue使用hiprint打印控件VUE HiPrint HiPrint简单使用
  • HBase常用Shell命令
  • 【阿里云】Apsara Clouder云计算专项技能认证-云服务器ECS入门,考试真题分享
  • 怎样编写java程序
  • 面向对象设计模式:结构型模式之适配器模式
  • Unity3D Shader系列之模板测试
  • 机器学习中的数学——精确率与召回率
  • Oracle启动数据库报ORA-01102解决办法
  • Go 语言面向对象编程及实践
  • 0102 MySQL05
  • [深入理解SSD系列 闪存2.1.3] 固态硬盘闪存的物理学原理_NAND Flash 的读、写、擦工作原理
  • 洗地机哪家强?洗地机排行榜
  • 【Java基础 下】 029 -- 多线程
  • R语言生物群落(生态)数据统计分析与绘图
  • 浙江首场千人大会现场爆满!实在智能九哥专题演讲:企业数字化转型,从实在RPA开始!
  • Windows 上 执行docker pull命令 提示:The system cannot find the file specified.
  • 查看 WiFi 密码的两种方法
  • 逻辑优化基础-bi-decomposition
  • Modbus转profinet网关连接1200PLC在博图组态与驱动器通讯程序案例
  • Android ART虚拟机 启动和初始化
  • 宇视科技一二三面
  • 优思学院|盘点,精益生产25个工具!【必需收藏】
  • Linux中将多块新硬盘合并成一个,挂载到/mysqldata目录下
  • Git的SSH密钥配置
  • C++回顾(九)——多继承
  • 交流约瑟夫森效应
  • 大数据项目实战之数据仓库:用户行为采集平台——第3章 用户行为日志