【发布时间】:2012-07-23 07:40:47
【问题描述】:
我有一个包含列表视图的活动。列表视图由从服务器提取的大型 XML 填充。 我的场景通常是有一个 SAX 解析器,解析 XML 并返回带有解析数据的向量(或类似结构)。 问题是 xml 太大并且 Vector 有太多元素导致内存不足错误。 此外,xml 包含指向正在下载的图像的链接,这使情况变得更糟。
在这种情况下我应该如何管理内存?我在想我是否可以只在用户滚动到列表视图中的给定行时才加载图像。
【问题讨论】:
-
我认为首先解析 XMl 并将解析的数据存储在数组或数组列表中..然后在列表视图中绑定数据..并用于图像使用延迟加载..
-
我实现了一个 CursorAdapter,它在 bindView 期间从文件中加载图像缩略图(文件名缓存在数据库中)。
-
使用 BaseAdapter 您可以将图像设置为延迟加载。 (关于大的xml,有多大?你的意思是你有一个包含太多对象的列表而导致内存不足??)
-
@Nuno Gonçalves 首先我认为对象太多,但后来我意识到我加载的图像太多了。我应该如何延迟加载图像?我的意思是,我可以存储图像 url,但如何知道何时加载当前应该在屏幕上的图像?
-
我没有阅读所有答案,但我几乎可以肯定那里已经有一个有效的答案。无论如何,在 getView() 方法上,只需创建一个新线程即可从您拥有的链接将图像加载到网络上。 :) 那里有例子,如果答案没有起到作用。
标签: android xml listview memory-management