首先,這個問題我已經解決,解決方案本文會提到。
出現的機型:
- 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內容,如果是,可以在這樣修改的基礎上,再把模版簡化一下,去掉不必要的樣式