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

原创 2016年06月01日 19:47:41

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

第一种实现的基本原理就是,当按下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);
        }
    }

}

第二种实现方式,通过记录按键时间计算时间差实现:

package com.gaolei.exitdemo;

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

public class MainActivity extends Activity {

    private long exitTime = 0;

    @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);
    }

    public void exit() {
        if ((System.currentTimeMillis() - exitTime) > 2000) {
            Toast.makeText(getApplicationContext(), "再按一次退出程序",
                    Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
            System.exit(0);
        }
    }

}

Android点击两次返回键退出App

Android点击两次返回键退出App的功能实现
  • ww897532167
  • ww897532167
  • 2016年12月27日 10:17
  • 527

Android实现点击两次返回键和长按返回键退出应用实践

虽然国庆节过了,玩的心还没回来。 今天给大家分享一篇关于退出应用的知识点。大家都知道在大部分App中,退出应用程序都是以点击两次返回键,并且控制连续点击的时间差,来提示用户,提高App的应用体验。 而...
  • u013718120
  • u013718120
  • 2016年10月13日 16:46
  • 2478

Android开发之两种方式实现连续点击两次返回键退出程序

经常看到很多程序点击一下返回键会显示再按一次退出程,然后连续点击两次返回键就退出程序了。虽然心里对这种功能实现方式有了一种大概想法,但是一直也没有去总结过。现在觉得如果项目中加上这个小功能还是很方便的...
  • u011895534
  • u011895534
  • 2015年07月30日 22:24
  • 2356

Android主界面连续两次点击物理返回键退出应用功能实现

部分应用中有在主界面中指定时间内连续点击返回键退出应用的功能,实现的思路自然是监听back键,如果连续两次点击间隔时间小于指定时间,则退出应用。现在介绍下实现的两种方式。重写onKeyDown,监听b...
  • u013952370
  • u013952370
  • 2015年06月11日 15:29
  • 976

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

Android的很多app中,都有点击一次返回键提示再次点击退出app的功能。 今天就看了下实现的方式,其实就是在相应的Activity中重写了onKeyDown()方法。在onKeyDown()方...
  • Mungo
  • Mungo
  • 2015年08月06日 11:23
  • 3567

配合Fragment实现 再点一次退出

This's one so easy again click one's exit , suitable for novices to use. long preTime = 0; ...
  • XiFangzheng
  • XiFangzheng
  • 2016年10月18日 20:26
  • 601

Android学习心得② - fragment中设置双击返回键退出程序

最近做的软件要实现双击返回键退出程序效果,其实一开始我是拒绝的,你不能让我改,我就马上去改,因为我不愿意改完了以后再加一些特技上去,代码“duang”一下,很快、很屌,这样用户出来一定会骂我,根本没有...
  • BadCodeLN
  • BadCodeLN
  • 2015年04月14日 14:28
  • 1819

Android 编程下模拟 HOME 键效果 ,返回键不退出APP,或者点击两次返回键退出APP

Android 应用开发中,有一种场景,就是我们不希望用户按 Back 键直接退出 Activity,而是希望应用隐藏到后台,类似于按 Home 键的效果。参考如下代码即可实现这样的效果: ...
  • lixuce1234
  • lixuce1234
  • 2017年04月13日 11:13
  • 721

Android用户点击返回按钮两次退出整个APP

最近的APP项目有一个需求就是连续点击两次返回按钮,退出整个APP,而不是返回到上一个页面,这个连续是有时间限制的,在我的项目里,我设置成2秒钟,如果两秒之内点击了两次,就代表用户想要退出整个APP,...
  • Sunjy1881
  • Sunjy1881
  • 2017年06月22日 11:26
  • 407

【ionic App问题总结系列】ionic点击系统返回键退出App

在安卓下,如果不处理系统返回键的事件,那么每次点击返回键,将页面将返回到上一个路由,这种逻辑不符合app的路由逻辑。正确的应该是:当页面到了各个导航页的首页时,此时再按返回键应该提示是否退出app,用...
  • qq673318522
  • qq673318522
  • 2016年11月19日 23:15
  • 5041
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android实现点击两次返回键退出
举报原因:
原因补充:

(最多只允许输入30个字)