Android实现点击两次返回键退出

发布时间 - 2026-01-10 22:24:14    点击率:

在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序。

第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行exit方法。
在exit方法中,会首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法。

package com.gaolei.exitdemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.KeyEvent;
import android.widget.Toast;

public class MainActivity extends Activity {

  // 定义一个变量,来标识是否退出
  private static boolean isExit = false;

  Handler mHandler = new Handler() {

    @Override
    public void handleMessage(Message msg) {
      super.handleMessage(msg);
      isExit = false;
    }
  };

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  }

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

  private void exit() {
    if (!isExit) {
      isExit = true;
      Toast.makeText(getApplicationContext(), "再按一次退出程序",
          Toast.LENGTH_SHORT).show();
      // 利用handler延迟发送更改状态信息
      mHandler.sendEmptyMessageDelayed(0, 2000);
    } else {
      finish();
      System.exit(0);
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android点击两次返回键退出  # Android点击返回键退出  # Android返回键退出  # Android开发实现Fragment监听返回键事件功能的方法  # Android 拦截返回键事件的实例详解  # Android 实现按两次返回键退出程序(两种方法)  # android PopupWindow点击外部和返回键消失的解决方法  # Android使alertDialog.builder不会点击外面和按返回键消失的方法  # Android开发返回键明暗点击效果的实例代码  # 按下  # 是在  # 两次  # 并在  # 弹出  # 将此  # 则会  # 第一种  # 为了防止  # 大家多多  # 再按  # 已为  # 基本原理  # 按了  # 应用程序  # 同时会  # 发送消息  # class  # java  # os 


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


相关推荐: javascript中的数组方法有哪些_如何利用数组方法简化数据处理  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何在万网利用已有域名快速建站?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  进行网站优化必须要坚持的四大原则  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  中国移动官方网站首页入口 中国移动官网网页登录  大连 网站制作,大连天途有线官网?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  Firefox Developer Edition开发者版本入口  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  如何在VPS电脑上快速搭建网站?  html5的keygen标签为什么废弃_替代方案说明【解答】  香港服务器部署网站为何提示未备案?  如何用好域名打造高点击率的自主建站?  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  如何为不同团队 ID 动态生成多个独立按钮  Laravel如何使用Collections进行数据处理?(实用方法示例)  网站图片在线制作软件,怎么在图片上做链接?  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  详解Android——蓝牙技术 带你实现终端间数据传输  如何快速搭建虚拟主机网站?新手必看指南  JS中对数组元素进行增删改移的方法总结  JavaScript如何操作视频_媒体API怎么控制播放  想要更高端的建设网站,这些原则一定要坚持!  Laravel如何处理和验证JSON类型的数据库字段  历史网站制作软件,华为如何找回被删除的网站?  PHP 500报错的快速解决方法  谷歌Google入口永久地址_Google搜索引擎官网首页永久入口  JavaScript如何实现路由_前端路由原理是什么  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  LinuxShell函数封装方法_脚本复用设计思路【教程】  原生JS实现图片轮播切换效果  浅述节点的创建及常见功能的实现  Laravel怎么在Controller之外的地方验证数据  开心动漫网站制作软件下载,十分开心动画为何停播?  高端建站三要素:定制模板、企业官网与响应式设计优化  如何在腾讯云服务器快速搭建个人网站?  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  如何用已有域名快速搭建网站?  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  网站制作免费,什么网站能看正片电影?