最近遇到一個Webview記憶體洩露的問題,上網查了一些結果,在此記錄一下:
webview在android系統中屬于一個比較特殊的view,在調用 webview.destroy()的時候,必須確定webview已經從view tree中被删除,否則這個函數不會執行的。如本app中的用法,在xml中靜态定義的webview,隻有在整個view退出後調用 webview.destroy()才會被正确執行,但整個view退出後又找不到webview了,這個是很沖突的。
是以android給出的解決方案是,不要在xml中定義webview,在xml中隻定義view,然後在需要webview的時候,建立一個webview,并把webview放到定義好的view的位置。
在删除得的時候,先把webview從parent view中删除,然後釋放,就不會有問題了。
在應用層修改如下:
WebView mWebView = new WebView(getApplicationgContext());
LinearLayout mll = findViewById(R.id.xxx);
mll.addView(mWebView);
protected void onDestroy() {
super.onDestroy();
mll.removeView(wv); //從布局中移除webView
mWebView.removeAllViews();
mWebView.destroy()
}
參考資料:http://my.oschina.net/zhibuji/blog/100580
本文轉自zhf651555765 51CTO部落格,原文連結:http://blog.51cto.com/smallwoniu/1841012,如需轉載請自行聯系原作者