按2次back键退出app

目前基本上大部分应用都有这种功能,点击返回键第一次会提示用户,如果在2S内点击了第二次才会退出。

方法一:通过使用handler的延迟操作2s实现目的
//是否退出的标记:默认false,不退出
    private boolean isExit = false;

    /**
     * 点击2次退出app
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && !isExit) {//判断是否为返回键和是否退出
            //提示用户
            ToastUtils.showShort("再按一次返回键退出app");
            //设置标记
            isExit = true;

            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    //延时2s之后将退出标记重置
                    isExit = false;
                }
            }, 2000);

            //返回true,将事件消费。
            return true;
        }
        //如果上述条件不成立,则会执行正常的返回操作。
        return super.onKeyDown(keyCode, event);
    } 

上面的代码也可以修改为:if条件OK时,handler发送一条延时2S消息,在handlerMessage里面设置条件继续满足。

方法二:通过判断2次back的时间差,判断是否退出

记录上次点击的时间,与本次点击的时间比较,当两次时间间隔小于一定值时,退出,否则提示“再按一次退出程序”,同时更新上次点击时间。

//上一次按back的时间
    private long lastBackTime = 0;

    /**
     * 点击2次退出app
     *
     * @param keyCode
     * @param event
     * @return
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (keyCode == KeyEvent.KEYCODE_BACK) {
            //当去点击back按键时候的时间
            long currentBackTime = System.currentTimeMillis();
            //当间隔大于2s的时候
            if (currentBackTime - lastBackTime > 2000) {
                ToastUtils.showShort("再按一次返回键退出app");
                //时间重新赋值
                lastBackTime = currentBackTime;
            } else {
                finish();
            }
            //将事件消费
            return true;
        }
        //如果上述条件不成立,则会执行正常的返回操作。
        return super.onKeyDown(keyCode, event);
    } 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,011评论 25 709
  • Activity是什么 Activity是四大组件之一,它提供一个界面让用户点击和各种滑动操作 Activity栈...
    叫我吹神阅读 2,702评论 0 4
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,669评论 0 17
  • 绿柳赶红鱼,亭阁倒水中。 游人行桥上,梦往湖里存。 ——珠峰仰坐
    珠峰仰坐阅读 134评论 0 2
  • 这本书是清华大学经管学院的教授写的,大多数是他博客的合集,对各个社会事件的评论。前言里他说道对社会事件的评论有三种...
    哇620阅读 213评论 0 1