在Android中调用多个WebView时如何控制内存使用?

栏目: IOS · Android · 发布时间: 5年前

内容简介:我的应用程序的主要活动是包含用于加载网页的Webview的活动.我重写方法shouldOverrideUrlLoading(WebView视图,String url)使每个URL请求调用一个Intent并加载一个包含WebView的新同一个活动.这样做是为了在按下BACK键时提供更好的体验,只需完成当前活动并返回到前一个活动,与单个webview中的goBack()相比,不需要再次渲染页面.

我的应用程序的主要活动是包含用于加载网页的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 – 可以提供有关可用系统内存以及内存最低阈值的信息.

Application.onLowMemory() – 当你的应用程序成为内存耗尽时告诉你.你可以覆盖这个方法,并在调用它时开始销毁Activity.您可能需要调用super.onLowMemory()以确保操作系统处理它所需的内容.

一种可能的解决方案,涉及控制活动的数量:

覆盖应用程序并创建一个公共静态ArrayList<Activity>它包含5个Activity对象.每当您为Activity执行onCreate()时,您可以将Activity添加到ArrayList,然后检查大小.如果尺寸> 5然后向位置0的Activity发送一个intent,使其处理intent并调用finish().然后从ArrayList中删除该对象.

不应该是太多的工作,但缺点是你必须手动管理的东西.我相信有更精明的解决方案可行.

翻译自:https://stackoverflow.com/questions/8893784/how-to-control-memory-usage-when-calling-multiple-webview-in-android


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

标签

标签

Gene Smith / 张军、陈军亮 / 机械工业出版社 / 2012-6 / 59.00元

本书对标记系统这一概念的内涵和外延进行了系统化的、深入浅出的阐述。从什么是标记系统、标记系统有什么价值,到标记系统的架构和与其他分类系统的对比,再到标签的呈现方式和标记系统的实现细节,作者都用通俗易懂的语言进行了阐述,并附有详细的示例和具体的案例研究。本书的每一章都涵盖了标记系统的一个方面,主要内容包括:标记系统的模型、价值、架构,标签的分类、可视化、管理方法,最后介绍标记系统设计方法。本书带领读......一起来看看 《标签》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具