现在,当我完成活动时,我发现我的活动没有从内存中清除。(我通过hprof dump进行检查)。但是,如果我从xml布局中删除WebView,活动就完全清除了。
我已经尝试过...
webView.destroy();
webView = null;
虽然我已在我的活动的 onDestroy() 方法中释放了资源,但效果不是很好。
在我的 hprof 文件中,我的活动(名为“Browser”)在调用 destroy()
后仍具有以下未释放的 GC 根:
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在此处的回答。
这确实是一个非常有趣的帖子。最近我在调试我的Android应用程序时遇到了很大的麻烦,最终发现我的xml布局包含一个WebView组件,即使未被使用,在屏幕旋转/应用程序重新启动后仍会防止内存被垃圾回收...这是当前实现的一个错误吗?还是在使用WebViews时需要特别注意什么?
不幸的是,目前在博客或邮件列表中还没有关于这个问题的回复。因此我想知道,这是SDK中的一个错误(可能类似于报告的MapView错误http://code.google.com/p/android/issues/detail?id=2181),还是如何完全从内存中获取嵌入了webview的activity?