Android应用开发之Android 实现点击两次物理按键退出App
凌雪 2018-11-29 来源 :网络 阅读 1155 评论 0

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

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


经常看到很多程序点击一下返回键会显示再按一次退出程,然后连续点击两次返回键就退出程序了。虽然心里对这种功能实现方式有了一种大概想法,但是一直也没有去总结过。(可能是没有时间吧!!)现在觉得如果项目中加上这个小功能还是很方便的,所以和大家分享两种方式。
方法一:
定义一个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
    0Handler 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无法通过返回键退出程序。
    @Overridepublic void onBackPressed() {    //   super.onBackPressed(); 如果去掉后无法通过返回键退出程序}
基本原理:
重写android的返回键点击事件监听方法,第一次按下时弹出Toast提醒用户再按一次退出,然后判断第二次按下的时间与第一次相差时间是否小于2秒,小于则推出程序否则继续弹出提示。    

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

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

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

我知道了

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

请输入正确的手机号码

请输入正确的验证码

获取验证码

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

提交

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

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

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

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved