Android开发问题记录-webview goBack键失效

在Android 4.4以上系统中,自定义WebView遇到goBack()回退功能失效的问题,表现为大约率无法正常回退。经过版本复查、找不同、验证改动等步骤,发现问题与`android:targetSdkVersion`提升到23有关。进一步测试发现,当`targetSdkVersion`小于18时,回退功能正常。问题最终定位在WebChromeClient中onProgressChanged的js注入处理,去掉该处理后功能恢复。解决办法是在js注入时针对KitKat及以上版本使用`evaluateJavascript`,其余版本使用`loadUrl`。然而,为何仅在特定情况下`loadUrl`影响历史栈,以及为何仅在onProgressChanged中使用会有问题,仍然是未解之谜。
摘要由CSDN通过智能技术生成

现象

    在Android4.4及以上的系统中,使用自定义的webview打开连接,在页面中再点击进入二级或三级页面,通过

   if (this.mWebView.canGoBack()) {
            this.mWebView.goBack();
            mActionBar.setCloseOnClickListener(new View.OnClickListener() {


                @Override
                public void onClick(View v) {
                    GlobalUtils.hideKeyboard(getActivity());
                    finish();
                }
            });
        } else {
            super.onBackPressed();
        }

做回退功能,发现不能正常回退。(此问题并非每次都出现,而是大概率出现。)


定位问题:

  1. 版本复查:由于属于版本迭代开发,此问题在新版本中被发现,先排查老版本是否存在此问题。结果:老版本不复现;下一步:
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值