美文网首页
连续点击返回键退出Android 应用

连续点击返回键退出Android 应用

作者: 果汁味Studio | 来源:发表于2023-03-06 20:18 被阅读0次
    问题

    业务需要,在主界面连续点击返回键退出应用,记录一下。

    解决方案

    先说结论,在主界面Activity中添加如下代码

      /**
         * 记录上次点击返回键时间
         */
        private long lastClickTime = 0;
    
       /**
         * 两次回退点击时间间隔设置不小于2s
         */
        public static final long TIME_INTERVAL = 2000;
    
       ...
       ...
      
     @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                exitApp();
                return false;
            }
            return super.onKeyDown(keyCode, event);
        }
    
     /**
         * 应用退出
         */
      private void exitApp() {
            if (System.currentTimeMillis() - lastClickTime > TIME_INTERVAL) {
                //距离上次退出时间超过默认间隔时间,则认为不是连续点击,并记录新的点击时间
                Toast.makeText(this, "连续两次点击退出应用",Toast.LENGTH_SHORT).show();
                lastClickTime = System.currentTimeMillis();
            } else {
                this.finish();
                System.exit(0);
            }
        }
       ...
       ...
      
    
    • 1、 新增变量lastClickTime 记录上次点击返回键时间。
    • 2、 新增时间间隔常量 TIME_INTERVAL
    • 3、 在回调方法 onKeyDown中监听每次点击返回键。
    • 4、 一旦点击返回键,且距离上次点击事件小于TIME_INTERVAL(这里设为两秒,实际可根据业务自行调整),则认为连续点击,退出应用。否则吐司弹窗提示,并记录最新点击时间。

    混合开发应用的场景补充
    • 在某些混合开发的App中,主界面由WebView控件构成,则需要考虑在每次点击返回键时,判断是否存在可回退Web页面。
    • 如果有可回退Web页面,先回退网页,再判断是否连续点击退出应用。

    代码如下:

    @Override
      public boolean onKeyDown(int keyCode, KeyEvent event) {
          // 是否可以回退网页
          if (keyCode == KeyEvent.KEYCODE_BACK) {
              if (webView.canGoBack()) {
                  webView.goBack();
                  return true;
              } else {
                  exitApp();
                  return false;
              }
          }
          return super.onKeyDown(keyCode, event);
      }
    

    相关文章

      网友评论

          本文标题:连续点击返回键退出Android 应用

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