在Android平台上捕获Back键的事件,Back键是手机上的后退键,一般的软件不捕获相关信息可能导致你的程序被切换到后台,而回到桌面的尴尬情况,在Android上有两种方法来获取该按钮的事件。

1.直接获取按钮按下事件,此方法兼容Android 1.0到Android 2.1 也是常规方法,直接重写Activity的onKeyDown方法即可,代码如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event)  {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复Toast.makeText(ml78.this,"返回键Back键测试",1).show();return true;}return super.onKeyDown(keyCode, event);
}

而对于Android 2.0开始又多出了一种新的方法,对于Activity 可以单独获取Back键的按下事件,直接重写onBackPressed方法即可,代码如下:

@Override
public void onBackPressed() {// 这里处理逻辑代码,大家注意:该方法仅适用于2.0或更新版的sdkreturn;
}

同时还有一种情况,就是在以前开发的程序中使用的是onKeyDown方法,但是后续版本为了兼容OnBackPressed方法。就需要两者之间进行嵌套。具体的方法如下:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {// 是否触发按键为back键if (keyCode == KeyEvent.KEYCODE_BACK) {onBackPressed();return true;} else {// 如果不是back键正常响应return super.onKeyDown(keyCode, event);}
}

利用时间差方法完成两次返回键退出,防止误操作。

// 退出时间
private long currentBackPressedTime = 0;// 退出间隔
private static finalint BACK_PRESSED_INTERVAL = 2000;//重写onBackPressed()方法,继承自退出的方法
@Override
publicvoid onBackPressed() {// 判断时间间隔if (System.currentTimeMillis()- currentBackPressedTime > BACK_PRESSED_INTERVAL) {currentBackPressedTime = System.currentTimeMillis();Toast.makeText(this, "再按一次返回键退出程序", Toast.LENGTH_SHORT).show();} else {// 退出finish();}
}

Android中OnkeyDown()和OnBackPressed()相关推荐

  1. Android中Finish和OnBackPressed、OnDestroy的区别

    开发的过程中,常常见到finish()和onBackPressed()以及ondestory好像都能关掉Activity.自己抽空总结一下,首先看源码,源码基于'androidx.appcompat: ...

  2. Android 中onKeyDown()方法使用详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  3. android全局监听onkeydown,Android中的几个onTouch()事件、onKeyDown监听返回键无效

    Android中的几个onTouch()事件.onKeyDown监听返回键无效 一:Android中的几个onTouch()事件 继承SimpleOnGestureListener,HahaGestu ...

  4. android webview详情,Android中的WebView详细介绍

    Android中WebView的详细解释: 1. 概念: WebView(网络视图)能加载显示网页,可以将其视为一个浏览器.它使用了WebKit渲染引擎加载显示网页. 2. 使用方法: (1).实例化 ...

  5. android sdcard 不存在,在android中显示sdcard上不存在的文件的提醒

    以下代码可正常运行,并播放sd卡上的音乐文件. 我想在sdcard上不存在音乐文件("不存在的音乐文件")时显示警报. 我该写些什么?在android中显示sdcard上不存在的文 ...

  6. Android中使用广播机制退出多个Activity

    谷歌百度一下,Android中退出多个Activity的方法,大家讨论的很多. 在实习的时候,看到公司的项目退出多个Activity,是采用LinkedList方法,毕业设计的时候,也参照了那种方法. ...

  7. android 退出多个activity,Android 中 退出多个activity的经典方法

    1.使用list集合方式 用list保存activity实例,然后逐一干掉 import java.util.linkedlist; import java.util.list; import and ...

  8. 掌握Android中的进程和线程

    进程和线程是现代网络操作系统的核心概念.Android作为一种优秀的.承袭Linux的移动操作系统,其进程和线程的概念是开发者和安全工作人员需要深入了解的问题.本文将详细介绍Android中的进程.线 ...

  9. Android 中opengl es灯光效果实例

    一.还是要准备一张图片,放在res/drawable中 二.灯光效果代码: /*** 设置灯光*///设置环境光gl.glLightfv(GL10.GL_LIGHT1, GL10.GL_AMBIENT ...

最新文章

  1. C++ string流
  2. hive load data inpath 空目录_走近大数据之Hive进阶(一、Hive数据的导入)
  3. Console-算法[for,if]-(大马-小马-马驹托砖)
  4. ICCV 2019 | 从多视角RGB图像生成三维网格模型Pixel2Mesh++
  5. 计算机Java程序设计标准讲义
  6. [译】Redux入门教程(一)
  7. cmd sc命令进行服务操作
  8. Marquee无间隙滚动(二)
  9. springmvc工作流程_springMVC工作原理及流程详细讲解
  10. 【FinE】隐含波动率
  11. angular烂笔头
  12. 转:如何做好团队复盘?3大阶段、9个步骤
  13. 微信小程序 延时执行 设置固定时间间隔
  14. 【评测】粪便基因组 DNA 提取试剂盒(柱膜法)使用报告
  15. 使用IText组件在PDF文档上绘制椭圆形印章的算法分析及代码分享
  16. jmeter 压力测试各种值的意思
  17. C#根据当前时间获取周,月,季度,年度等时间段的起止时间
  18. HTML5 Canvas可拖动的弹性大树摇摆动画
  19. wincc脚本打印斑马打印机条码,斑马打印机接口
  20. 小程序x钉钉内网穿透(windows) 步骤

热门文章

  1. Kylin 之对大数据量的多维分析
  2. 命令创建.net core3.0 web应用详解(超详细教程)
  3. 个人总结学 iOS 开发的15条经验
  4. 工欲善其事,必先利其器,程序员都在用什么工具?
  5. LeetCode467. Unique Substrings in Wraparound String
  6. 一级建造师(石油化工)考试系统_金桥考试虫 v2.0 官方
  7. 如何用计算机逻辑描述,第一章 计算机底层逻辑之人有两项绝技
  8. 用PowerShell批量删除未部署的wsp包
  9. 达人评测 r7 7735hs和r7 6800hs选哪个好? r77735hs和6800hs对比
  10. ubuntu 热键设置_分配热键以在Ubuntu中打开终端窗口