原生頁面嵌入WebView,下方原生控件抖動

首先,這個問題我已經解決,解決方案本文會提到。

出現的機型:

  • 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內容,如果是,可以在這樣修改的基礎上,再把模版簡化一下,去掉不必要的樣式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章