Android 返回键方法

2023-11-08

1、都是按下返回鍵触发,调用父类方法会直接关闭调当前activity

2、先后调用顺序onKeyDown>onBackPressed

3、dispatchKeyEvent优先级最高,且上面两个方法不会调用

 @Override
    public void onBackPressed(){
        super.onBackPressed();
        Log.i("adam","已退出");
    }
    //都是按下返回鍵触发,调用父类方法会直接关闭调当前activity
    //先后调用顺序onKeyDown>onBackPressed
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
            Toast.makeText(this, "按下了back键 onKeyDown()", Toast.LENGTH_SHORT).show();
            Log.i("adam","onKeyDown已退出");
            return super.onKeyDown(keyCode, event);
        }else {
            Log.i("adam","true");
            return false;
        }
    }
    //优先级最高,且上面两个方法不会调用
    @Override
    public boolean dispatchKeyEvent(KeyEvent keyEvent) {
        if (keyEvent.getKeyCode() == 4 && keyEvent.getAction() == 0 && keyEvent.getRepeatCount() == 0) {
            Log.i("adam","dispatchKeyEvent已退出");
        }
        return false;
    }

4、新建一个退出对话框

   public void adamExit(){
        // 仅供参考
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setMessage("确认退出游戏吗?").setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "取消退出", Toast.LENGTH_LONG).show();
                //关闭对话框
                dialog.dismiss();
            }
        }).setPositiveButton("确认退出", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //手动杀死进程
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);
                MainActivity.this.finish();
                android.os.Process.killProcess(android.os.Process.myPid());
            }
        }).show();
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 返回键方法 的相关文章

随机推荐

  • 界面开发(二)--- NativeWindow

    NativeWindow是 net Framework提供的一个底层的类 微软官方的解释为 NativeWindow Provides a low level encapsulation of a window handle and a w
  • 虚拟机redhat9开机不能进入图形界面解决办法

    在启动时无法进入图形界面 出现错误提示 Markers probed from config file default setting from command line notice II informational WW warning
  • c#面试3(选择题)

    46 下列关于 C 中索引器理解正确的是 c A 索引器的参数必须是两个或两个以上 B 索引器的参数类型必须是整数型 C 索引器没有名字 D 以上皆非 47 以下关于 ref 和 out 的描述哪些项是正确的 多选 ACD A 使用 ref
  • java8的lambda中的map相关操作

    0 入门详解篇 1 史上最简单入门 java8的lambda中的map相关操作 基础及注意事项图文详解 2 java8的lambda中collect接口案例及原理详解 官方文档解读 3 java8 封装lambda泛型工具类之list转为m
  • Java 获取系统时间的三种方式,总结起来

    业务场景中 不乏会需要取到当前系统的时间 做一些判断 比如判断某个执行过程需要花多长时间 然后将时间记录下来 返回给业务查看 或者需要或者一个唯一的值做一些表单单号 那么当前系统时间就是唯一的 可以适用 等等 那下面总结下有哪几种方式来获取
  • 为什么 C#/.Net在国内的人气远不如国外?

    因为互联网公司是不直接靠技术赚钱的 使用何种技术对实现直接赚钱的业务来说都是次要的 往往是技术惯性决定技术选型 国内信息技术发展偏科严重 软件行业毁于盗版和缺少政府扶持 互联网行业靠低技术门槛和资本运作吸收了大量社会资源和行业精英 主导了行
  • P2P、消费贷和现金贷的区别

    P2P 消费贷和现金贷的区别 看图
  • 今天收获的意想不到的快捷键

    这个技巧最没有技术含量 但是又最最实用 而且我又竟然不知道甚至依稀好像以前听过这个快捷键 更有些 的是我从来没有想过这方面是不是该有个快捷键 使用桌面快捷键 把常用的软件在桌面上放一些快捷方式 在快捷方式上右键属性 在快捷方式中输入启动的快
  • windows服务器IIS获取客户端域账号

    在项目中遇到需要获取客户端登录的域账号信息的需求 关键部分在于服务器的iis配置 1 确保服务器接入对应的域里面 使用域账号登录的 2 iis需要设置为windows身份认证 3 我使用webform开发对应站点 通过request Ser
  • vscode给远程服务器安装扩展速度慢——安装不上解决方法(在线或离线方式)

    1 本地客户机可以联网 先在本地安装扩展 一般来说 本地安装速度很快也一定能成功 然后在本地已安装的目录里边就可以安装到远程服务器上 但是很多人安装时 速度很慢 并且会失败 我就是这种情况 在下载CMake时速度特别慢 这时可以采用离线方式
  • 线程创建的四种方式

    java中创建线程的四种方法以及区别 Java使用Thread类代表线程 所有的线程对象都必须是Thread类或其子类的实例 Java可以用四种方式来创建线程 如下所示 1 继承Thread类创建线程 2 实现Runnable接口创建线程
  • EasyX的安装与使用详细教程

    EasyX 是针对 C C 的图形库 可以帮助使用C C 语言的程序员快速上手图形和游戏编程 可以用来做些简单的演示2d类游戏 没有cocos2d x那样重量级 学习起来也比较简单 安装 1 打开Easyx官网https easyx cn
  • java+代码回调+编写_Java回调实现

    Java回调实现 什么是回调 回调核心思想 案例代码实现 后序 一 什么是回调 开发过程当中存在某种特殊的业务需求 例如 回调生活实例 PNG 描述 老板给员工下达了工作任务之后 就去做其他事情了 此时此 刻 老板不知道需要多长时间完成 不
  • elk笔记16--aggs-Bucket Aggregations

    elk笔记16 aggs Bucket Aggregations 1 Bucketing 简介 2 Bucket Aggregations 分类 2 1 Terms Aggregation 2 2 Global aggregators 2
  • 中国CDN市场厂商排名:阿里云稳居第一,腾讯云第三

    中国CDN市场厂商排名 阿里云稳居第一 腾讯云第三 日前 市场咨询机构计世资讯 CCW Research 发布 2018 2019年中国CDN市场发展报告 显示 阿里云以近31 的市场份额 成为中国CDN市场第一大厂商 腾讯云则以10 4
  • 4 MATLAB_GUI_单选按钮(Radio Button)、复选框(Check Box )、切换按钮(Toggle Button)的基本用法

    目录 一 实例效果 二 步骤 1 先建一个空白的GUI 2 创建一个单选按钮 Radio Button 3 创建一个文本框 4 保存一下 并编辑单选按钮 Radio Button 的回调函数 5 保存一下 运行程序查看单选按钮的效果 6 同
  • 维纳滤波器(一)

    很久没有静下心来整理一下了 我很早之前就想做一个从Wiener 滤波器了开始讲的博客了 现在终于有了安静坐下来总结一下的理由 从这里开始入手我感觉是对这一年多时间的尊敬 我会从模型开始讲起 会把我从论文和书中的理解呈现出来 如果有时间 我会
  • 利用qt制作帮助文档

    利用qt制作帮助文档 创建文档和自定义的qt assistant 1 创建文档即是一些html文件 这里可以使用qt提供的工具像是qdoc 和Doxygen生成帮助的html文档 2 组织文档结构用于qt assistant a 创建qt
  • Intellij IDEA的JS文件报错:Import declarations are not supported by current JavaScript version

    https blog csdn net qq 38446250 article details 80276625
  • Android 返回键方法

    1 都是按下返回鍵触发 调用父类方法会直接关闭调当前activity 2 先后调用顺序onKeyDown gt onBackPressed 3 dispatchKeyEvent优先级最高 且上面两个方法不会调用 Override publi