天天看點

WebView 避免記憶體洩露的方法

最近遇到一個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,如需轉載請自行聯系原作者

繼續閱讀