0

我加载使用 Javascript 文件将整个页面加载到 WebView 的网站。每次我将页面加载到 Web 视图时,它都会显示一些内存增加

设置 > 应用程序 > 运行

甚至,当我释放 Webview 时,它也不会释放内存。

我没有缓存 Webview 中的资源。但是,当我使用仪器分析内存时,它显示图像资源缓存在内存中,没有被释放。我的代码在这里 ref :

    super.onCreate(savedInstanceState);
    setContentView(R.layout.webview);
    Intent in = getIntent();
    String page_url = in.getStringExtra("link");
    Log.i("display","url :"+page_url);
    if(deleteDatabase("webview.db") && deleteDatabase("webviewCache.db")){
        Toast.makeText(this, "Delete Webvie data base successfully",Toast.LENGTH_SHORT).show();
    }
    webview = (WebView) findViewById(R.id.webpage);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebViewClient(new WebViewClient());
    webview.getSettings().setLoadWithOverviewMode(true);
    webview.getSettings().setAppCacheEnabled(false);
    webview.loadUrl(page_url);
    webview.clearHistory();
    webview.clearFormData();
    webview.clearCache(true);

谁能指导我在哪里失踪?如何优化 WebView 的内存加载?

提前致谢。

4

1 回答 1

1

WebView 是一个复杂的 UI 小部件,在使用时会消耗大量内存。在 Andriod 4.4 之前,WebView.freeMemory() API 可能会有所帮助,具体取决于幕后实际使用内存的情况。

当您完成 WebView 并调用 WebView.destroy() 并将其从视图层次结构中分离出来时,将回收一些内存。

在 Android 4.4 中,WebView 内的内存管理更加自动化,当系统处于负载状态并触发 onTrimMemory 时,WebView 将尝试释放内存(http://developer.android.com/reference/android/content/ComponentCallbacks2.html# onTrimMemory(int) )。

于 2013-12-01T20:28:56.190 回答