Android WebView导致内存泄漏

时间:2014-03-07 22:14:12

标签: android memory webview memory-leaks

我在这里阅读过各种帖子&尝试使用所有提示,但它仍然失败。应用程序的每个实例都会不断累积更多内存。这是代码段。有什么想法吗?只需使用WebView启动页面......

private class MyWV extends WebViewClient
{
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 
        {
                Log.d("MyWV", "shouldOverrideUrlLoading, url = " +url);
                return false;
        }
}

@Override
public void onCreate(Bundle icicle) {
    Log.d(TAG, "onCreate");
    Toast.makeText(getApplicationContext(), "Please wait...", Toast.LENGTH_LONG).show();

    super.onCreate(icicle);
    setContentView(R.layout.main);

    mFL = (FrameLayout) findViewById(R.id.base_layout);

    mWebView = new WebView(this);
    mFL.addView(mWebView);

    mWebView.setWebViewClient(new MyWV());

    Log.e(TAG,"onCreate: Calling setJavaScriptEnabled...");
    mWebView.getSettings().setJavaScriptEnabled(true);

    mWebView.loadUrl("http://www.yahoo.com");
}

@Override
protected void onDestroy() {
    Log.d(TAG, "onDestroy");

    mFL.removeAllViews();

    mWebView.removeAllViews();
    mWebView.clearHistory();
    mWebView.loadUrl("about:blank");
    mWebView.freeMemory();
    mWebView.destroy();
    mWebView = null;

    super.onDestroy();
}

2 个答案:

答案 0 :(得分:0)

根据Memory leak in WebView,尝试使用应用程序上下文创建WebView:

mWebView = new WebView(getApplicationContext());

答案 1 :(得分:-3)

经过大量的调试,发现它与Linux内存无关。这是我们在图形堆管理中搞砸了的东西。找到了解决方案生活正常现在