在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


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

查看所有标签

猜你喜欢:

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

Functional Programming in Scala

Functional Programming in Scala

Paul Chiusano、Rúnar Bjarnason / Softbound print / 2014-9-14 / USD 44.99

Functional programming (FP) is a programming style emphasizing functions that return consistent and predictable results regardless of a program's state. As a result, functional code is easier to test ......一起来看看 《Functional Programming in Scala》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具