按2次back键退出app

作者: YbSTGing | 来源:发表于2017-11-11 17:44 被阅读4次

    目前基本上大部分应用都有这种功能,点击返回键第一次会提示用户,如果在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);
        } 
    

    相关文章

      网友评论

      • 磐龍:第二种方法比较好

      本文标题:按2次back键退出app

      本文链接:https://www.haomeiwen.com/subject/lwfgmxtx.html