看了很多WebView内存泄漏的博文,很多文章都有多多少少的问题。
我便在我这篇博文中仔细针对webView内存泄漏进行分析。
看这篇文章的人都应该对webview深恶痛绝
怎么总是释放不掉呢???
释放不掉的原因是啥呢???
为啥特么的总是阴魂不散呢???
答:webView内部的一些线程持有activity对象,导致activity无法释放。继而内存泄漏。
解决:
方案一:退出程序调用
System.exit(0);
弊:太暴力,只能在程序退出后清除持有。
方案二:activity弱应用持有
private WeakReference<BaseWebActivity> webActivityReference = new WeakReference<BaseWebActivity>(this);
bridgeWebView = new BridgeWebView(webActivityReference .get());
bridgeWebView.setLayoutParams(params);
container.addView(bridgeWebView);
在销毁中执行
@Override
protected void onDestroy() {
super.onDestroy();
//防止webView内存泄漏
if (bridgeWebView != null) {
//先从父容器中移除webview,然后再销毁webview
ViewPar