首先,这个问题我已经解决,解决方案本文会提到。
出现的机型:
- Google Pixel 2(高概率),Android 10;
- 华为Mate9 ,Android 9;
- 欢迎补充~
解决历程:
考虑过手机系统版本、supportLibrary版本、布局问题等等,一个个尝试,甚至自己重新写了html布局,使用了js获取高度传给原生等等都失败了;具体历程不表,需要讨论可以留言;
解决办法:
后来偶然发现一个问题,页面刷新后高度也会变化,这个我就考虑到了Webview
是不是内存泄露了,后来一查果然是的,所以解决办法就是不要在xml
文件里面写Webview
布局,如下:
BridgeWebView bridgeWebView = new BridgeWebView(context);
relativeLayout.removeAllViews();
relativeLayout.addView(bridgeWebView);
最后最好在activity
关闭的时候清空webview
public void clearWebView(){
if(bridgeWebView == null) return;
ViewParent parent = bridgeWebView.getParent();
if(parent != null && parent instanceof ViewGroup){
((ViewGroup) parent).removeView(bridgeWebView);
}
bridgeWebView.stopLoading();
bridgeWebView.getSettings().setJavaScriptEnabled(false);
bridgeWebView.clearHistory();
bridgeWebView.removeAllViews();
bridgeWebView.destroy();
}
补充一下,我使用的是tencent X5WebView
,系统原生的也有这个问题
再次编辑一下:
这样修改可能还没有效果,可以检查一下自己是不是使用的模版加载的webview内容,如果是,可以在这样修改的基础上,再把模版简化一下,去掉不必要的样式