我的应用程序的主要活动是一个Activity
,其中包含一个Webview
加载网页。如何在Android中调用多个WebView时控制内存使用情况?
我重写了方法shouldOverrideUrlLoading(WebView view, String url)
以使每个URL请求调用Intent
并加载包含WebView
的新同一活动。
这样做是为了提供更好的体验,当按下BACK键时,只需完成当前活动并返回到前一个活动,无需再花时间再次呈现页面,与在单个webview中使用goBack()相比。
但现在的问题是,当我打开很多网址,建立在后台activitys的长龙,其占用的内存变大。
当我回到启动程序并检查进度时,我可以看到我的应用程序缓存了超过200M的数据。这是不能接受的......
而且有趣的是,我可以看到我的应用程序中使用了我的记忆,但在DDMS的Eclipse中的堆视图我可以看到应用程序分配的不超过10M的内存。所以我猜200M是webStorage
缓存Webview
?
有没有什么办法控制内存?
我在考虑只保存可能的5层活动,而当回到5次只是跳回主页。但是仍然不知道如何在我需要的5个活动旁边释放内存,而我再也不会使用它了?
或者,如果那是因为WebView
是保持自动缓存网页,哪能经理这个手动?如设置最大缓存大小或页数的限制?
对我来说,这是一个残酷的解决方案来获得速度......覆盖后退按钮的工作方式,并转到页面的另一个活动对我来说并不是一个真正的解决方案。您应该尝试优化页面以加快载入速度,但使用压缩图像,压缩图像等。可能还有其他WebView方法和设置可供您尝试和加快速度。 – 2012-11-14 19:41:19