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

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