首页 > 学院 > 开发设计 > 正文

两次返回键退出App

2019-11-09 18:04:27
字体:
来源:转载
供稿:网友

参考:http://blog.sina.com.cn/s/blog_4fd2a65a0101gg2o.html

前言

在android开发中,我们经常要判断用户对返回键的操作,一般为了防止误操作我们都是在用户连续两次点击返回键提示用户退出APP。

思路

在这里我们有两种思路: - 当按下Back键的时候我们会被onKeyDown捕获,通过一个记录两次按键的时间差来实现 - 当按下Back键的时候我们会被onKeyDown捕获,这个时候我们通过标志位isExit,来判断是否弹出提示,当isExit为false的时候,则置为true,同时会弹出提示,并在2000毫秒(2秒)后发出一个消息,在Handler中将此值还原成false,如果在发送消息间隔的2秒内,再次按了BACK键,则再次执行exit方法,此时isExit的值已为true,则会执行退出的方法

实现

方法一: @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return false; } return super.onKeyDown(keyCode, event); } public void exit() { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getapplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { activity.finish(); System.exit(0); } }

方法二:

PRivate boolean isEixt = false;// 是否退出APP的标志位 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { exit(); return false; } return super.onKeyDown(keyCode, event); } Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { super.handleMessage(msg); isEixt = false; }; }; public void exit() { if (!isEixt)// 第一次点击 { isEixt = true; DialogManager.getInstance(this).showToast("再按一次退出应用"); handler.sendEmptyMessageDelayed(0, 2000); } else { // 第二次点击 ShrkbApplication.getInstance().exitApp(); } }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表