我想知道android中listview的回收概念。在这里,我使用列表视图,每个列表项上都有图像和文本。以下是我的疑惑,
1.在listview中回收列表项时会发生什么?是否清除了对象的内存(在getView()中)?
2.在回收列表项时,为什么视图引用不会被回收并添加到convertview?如果它在convertview中,将在listitem中加载的位图会发生什么。 listview是否继续引用位图或清除位图的内存?
答案 0 :(得分:0)
在listview中回收列表项时会发生什么?是吗? 创建的对象的内存(在getView()中)被清除了吗?
如果您使用ViewHolder
pattern,则不会从内存中清除对象。相反,View
个对象将用于下一个数据项。
在回收列表项时,为什么不回收视图引用 并添加到convertview?如果它在convertview中,会发生什么 已经在listitem中加载的位图。列表视图是否保留 引用位图或清除位图的内存?
要重新View
引用,您需要使用ViewHolder
模式。已加载Bitmap
将在那里,直到您更新/清除ImageView
。
答案 1 :(得分:0)
1.在listview中回收列表项时会发生什么?是否清除了对象的内存(在getView()中)?
您从View
返回的getView()
作为参数传递给getView()
作为convertView
的另一个号码。
是否在重新配置行位置后返回,或返回新的View
,由您决定。
如果你自己没有引用convertView
并且没有返回它,那么它就有资格进行垃圾收集,因为listview本身只会保留对你从{{1}返回的视图的引用}}
2.在回收列表项时,为什么视图引用不会被回收并添加到convertview?
我不知道你在这里问的是什么。
如果它在convertview中,将在listitem中加载的位图会发生什么。 listview是否继续引用位图或清除位图的内存?
Listview不关心视图的内部。
同样,如果你没有对任何视图或位图的引用,最终垃圾收集器会处理它们。