Android应用开发Android 实现点击两次物理按键退出App
白羽 2019-03-25 来源 :网络 阅读 764 评论 0

摘要:本文将带你了解Android应用开发Android 实现点击两次物理按键退出App,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android 实现点击两次物理按键退出App,希望本文对大家学Android有所帮助。



Android应用开发Android 实现点击两次物理按键退出App



      经常看到很多程序点击一下返回键会显示再按一次退出程,然后连续点击两次返回键就退出程序了。虽然心里对这种功能实现方式有了一种大概想法,但是一直也没有去总结过。(可能是没有时间吧!!)现在觉得如果项目中加上这个小功能还是很方便的,所以和大家分享两种方式。
   
    方法一:
    定义一个boolean型变量用于标示是否退出
   
   
    boolean isExit;
    然后重写Activity中的onKeyDown方法
   

    @Override  
    public boolean onKeyDown(int keyCode, KeyEvent event) {  
        if (keyCode ==   KeyEvent.KEYCODE_BACK) {  
            if (!isExit) {  
                isExit = true;  
                  Toast.makeText(getApplicationContext(), 再按一次退出程序,   Toast.LENGTH_SHORT).show();  
                  mHandler.sendEmptyMessageDelayed(0, 2000);  
            } else {  
                Intent intent = new   Intent(Intent.ACTION_MAIN);  
                  intent.addCategory(Intent.CATEGORY_HOME);  
                startActivity(intent);  
                System.exit(0);  
            }    
            return false;  
        } else {  
            return   super.onKeyDown(keyCode, event);    
        }  
    }
    根据onKeyDown用到的消息写一个写一个Handler
   

    Handler mHandler = new Handler() {    
     
            @Override  
            public void   handleMessage(Message msg) {  
                // TODO Auto-generated   method stub  
                  super.handleMessage(msg);  
                isExit = false;  
            }  
     
        };
      基本原理,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,首先判断isExit的值,如果为false的话,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false。如果在发送消息间隔的2秒内,再次按了BACK键,此时isExit的值已为true,则会执行退出的方法。
   
    方法二:
    通过重写onBackPressed方法来实现。
   
  
    // 第一次按下返回键的事件
    private long firstPressedTime;

    // System.currentTimeMillis() 当前系统的时间
    @Override
        public void onBackPressed()   {
            if   (System.currentTimeMillis() - firstPressedTime < 2000) {
                  super.onBackPressed();
            } else {
                  Toast.makeText(MainActivity.this, 再按一次退出,   Toast.LENGTH_SHORT).show();
                firstPressedTime =   System.currentTimeMillis();
            }
        }
    注意!!
    如果重写onBackPressed()方法时,删掉super.onBackPressed();则app无法通过返回键退出程序。
   
 
    @Override
    public void onBackPressed() {
        // super.onBackPressed(); 如果去掉后无法通过返回键退出程序
    }
    基本原理:
   
      重写android的返回键点击事件监听方法,第一次按下时弹出Toast提醒用户再按一次退出,然后判断第二次按下的时间与第一次相差时间是否小于2秒,小于则推出程序否则继续弹出提示。
   
        

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程