我用LinearLayout
base制作了一个树形视图组件。但是当内部项目数量非常大时,android会通过内存不足错误来关闭它。我在每个项目中只使用了3个3kb大小的位图。
我如何减少我的组件(LinearLayout
)的内存使用我知道ListView
有scrollingCache
但我使用LinearLayout
?
有人能帮上忙吗?
谢谢。
发布于 2013-08-20 16:15:37
ListView
使用的系统仅初始化用户可见的行(视图)。当一行不再可见时,它不会被销毁,但它用于膨胀下一个将可见的视图的布局。使用此系统,即使列表中有1000个项目,您也只能将可见对象保存在内存中。
Here you can find a more accurate description of the recycle system
我认为你也应该看看this video。这是来自Google I/O的关于ListView
的一课。我发现理解ListView
是如何工作的非常有用。
在您的情况下,如果您不能使用ListView
,我认为您应该手动实现此系统。这是相当困难的,所以我能给你的最好的建议是尝试创建一个适合你的需求的定制ListView
并使用它。
PS:方法recycle()
有一点不同,它用于删除对您正在使用该方法的Bitmap
的任何引用。这样,下次GC运行时,它将能够从内存中删除Bitmap
https://stackoverflow.com/questions/18329426
复制相似问题