最佳答案
我有一个使用 xml 布局的活动,其中嵌入了 WebView。我根本没有在我的活动代码中使用 WebView,它所做的只是放在 xml 布局中并显示出来。
现在,当我完成这个活动时,我发现我的活动没有从记忆中清除。(我通过 hprof dump 查询)。不过,如果我从 xml 布局中删除 WebView,则该活动将被完全清除。
我已经试过了
webView.destroy();
webView = null;
毁掉我的活动,但这没有多大帮助。
在 hprof 转储中,我的活动(名为‘ Browser’)有以下剩余的 GC 根(在对其调用 destroy()
之后) :
com.myapp.android.activity.browser.Browser
- mContext of android.webkit.JWebCoreJavaBridge
- sJavaBridge of android.webkit.BrowserFrame [Class]
- mContext of android.webkit.PluginManager
- mInstance of android.webkit.PluginManager [Class]
我发现另一个开发者也经历过类似的事情,见 Filipe Abrantes 的回复: Http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android/
确实是一篇非常有趣的文章。 最近我过得很艰难 上的内存泄漏故障排除 Android 应用程序,最终它被证明是 我的 xml 布局包含了一个 WebView 组件,即使没有使用,是 阻止记忆存在 G-在屏幕旋转/应用程序后收集 重新启动... 这是当前的一个错误 还是有什么东西 特别是当某人需要做某事时 使用网上浏览
现在,很不幸,博客和邮件列表上还没有关于这个问题的回复。因此,我想知道,这是一个错误在 SDK (也许类似于地图视图错误报告 http://code.google.com/p/android/issues/detail?id=2181)或 如何将活动完全从内存中移除,并嵌入一个 webview?