我的应用程序的主要活动是包含用于加载网页的Webview的活动.
我重写方法shouldOverrideUrlLoading(WebView视图,String url)使每个URL请求调用一个Intent并加载一个包含WebView的新同一个活动.
这样做是为了在按下BACK键时提供更好的体验,只需完成当前活动并返回到前一个活动,与单个webview中的goBack()相比,不需要再次渲染页面.
但现在的问题是,在我打开许多URL后,在后台创建一个长队列活动时,它使用的内存变得很大.
当我回到启动器并检查进度时,我可以看到我的应用程序缓存超过200M的数据.这是不可接受的……
有趣的是,我可以看到我的应用程序耗尽了我的内存,但在Eclipse中的DDMS的Heap视图中,我可以看到应用程序分配的内存不超过10M.所以我猜200M是Webview缓存的webStorage?
有没有办法控制记忆?
我正在考虑一次只保存5层活动,当回去5次时,只需跳回主页.但是仍然不知道如何在我需要的5个活动旁边释放内存,我将永远不会再使用它?
或者,如果是因为WebView会自动缓存网页,我该如何手动管理?比如设置最大缓存大小或页数的限制?
一般来说,我同意Kevin的评论.我认为保留多个Activity对象以防止重新加载WebView对于具有如此有限资源的移动环境来说是违反直觉的.
话虽这么说,你有很多不同的问题和解决方案的可能性,所以我没有一个单一的答案.查看这些链接,看看是否有任何帮助:
ActivityManager
– 你可以使用大量的东西,看看它的子类.
ActivityManager.RunningTaskInfo
– 从未使用它,但似乎有一些有用的东西,特别是在确定哪些Activity正在运行时.
ActivityManager.MemoryInfo</