过年上班第一天 app就报出一个bug,由于负责这块的同时还没来上班,得自己上去改这块bug。
原理是一个容器中添加一个webview,在这个webview跳到某个特定的url时,截取url,新增一个webview在这个新的webview中继续之前的url,完成后续的淘宝app调用后,再把新增的webviewremove掉。
用了一天的时间才搞找到原因: shouldOverrideUrlLoading中的一个方法
String nowUrl = view.getUrl();
if (!TextUtils.isEmpty(nowUrl) && isInsidePage(nowUrl) && !isInsidePageAndNotGoshop(url)&&!urlCache.equals(nowUrl)) {
Parameters parameters = UrlUtils.splitUrlQuery(url);
String iswap = parameters.getParameter("iswap");
if(!TextUtils.isEmpty(iswap)) {
if (!iswap.equals("1")) {
outsideWebView = getOutSideWebView(USER_AGENT);
} else {
outsideWebView = getOutSideWebView(M_USER_AGENT);
}
} else {
outsideWebView = getOutSideWebView(null);
}
outsideWebView.loadUrl(url);
Log.d("webtest", "addout");
rootWebView.addView(outsideWebView,new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
return true;
}
new webview 新增两次!
原来html的前端开发突然神奇的使用了锚点,导致判断代码出现错误新增两次
http://m.xxx.com/super/
http://m.xxx.com/super/#apple-fa 这就是使用了锚点的url
总结
1.没事看看同事的代码,改别人的代码很恶心
2.改别人负责的bug是先整理别人的思路
3.改bug要静下心
remove后 view还在的情况,可能情况
1.remove失效 引用还在
2.有多个子view
我解决bug是习惯用debug的方式,加上机器卡 很慢 效率低 , 一个childcount 就什么都知道了
4.解决问题还是要治本 在发现原因前条用removeallview的方法是可以解决问题的 但是隐患还在 解决问题治本 深入研究 成长的才快