开发中遇到 加载一个ActivityA的WebView之后,再去打开另外一个ActivityB的WebVeiw,B中的界面为白屏,日志查询B中始终无法回调onPageFinished方法,排查可能是A中的webview没有销毁,于是我到A界面的生命周期销毁即onDestroy中添加如下代码,其中webViewParent为WebView的父布局:
mWebView.stopLoading();
mWebView.removeAllViews();
mWebView.loadUrl("about:blank");
webViewParent.removeView(mWebView);
mWebView = null;
编译跑了一下,结果还是白屏,让我怀疑是否是自己的判定有误,于是我屏蔽了A中的WebView相关代码,先打开A,销毁A后再去打开B,发现B的WebView正常加载。我断定还是A中WebView没有彻底销毁的问题,于是把重点放到了WebView上,最终我发现了一个
mWebView.pauseTimers();
谷歌也没对该方法做出合理解释,网上看到其它人的写法也会在onPause方法中引用该方法。这边现象都是有问题。只能屏蔽调这行代码。具体原因没有排查,有兴趣的同仁可以去查一下。
在此仅为记载开发中遇到的坑,适合自己项目的才是正确的。