listview中的drawable导致内存分配过多?

时间:2013-01-03 07:31:49

标签: android memory-management imageview drawable image-loading

我有一个包含四个页面的视图寻呼机,每个页面都有一个listView。到目前为止一切都还可以,但是当我滚动列表时,它会踢出数千次GC_EXTERNAL_ALLOC并且它会对我的应用程序的性能产生影响。所以我按照Romain Guy's documentation跟踪DDMS的分配情况,并且因为将图像加载到列表项而看到了这一点。

我保存图像,然后检查之前是否保存了该图像,如果有,我使用:

 img.setImageDrawable(Drawable.createFromPath(imagePath));

当我获得分配曲目时,它向我显示此行在滚动时分配了大量内存...我只是想知道为什么?如果有任何情感方式加载图像建议我?

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为您需要在列表视图中显示一些“N”个图像,这些图像来自互联网。

参考:Fedors Lazy Loading

答案 1 :(得分:1)

您可以找到最好的文档:http://developer.android.com/training/displaying-bitmaps/index.html

但说实话,这很复杂。在下一版RoboSpice中,我们希望提供一种方法来封装所有这些复杂性(ui-spicelist模块)。