我创建了一个GalleryView
和ImageView
,当在图库中单击某个项目时,它们会显示更大的图像。我已经使用下面的代码来实现ImageAdapter
:
public ImageAdapter(Context c)
{
context = c;
TypedArray a = obtainStyledAttributes(R.styleable.gallery1);
itemBackground = a.getResourceId(R.styleable.gallery1_android_galleryItemBackground, 0);
a.recycle();
}
当我删除语句
a.recycle()
时,没有任何变化,该应用程序像以前一样正常运行,但是到处都可以看到必须强制回收typedArray
。如果我的应用程序的运行方式没有变化,recycle()
方法的用途是什么? 最佳答案
这一点类似于清除C语言中的指针的想法(如果您熟悉的话)。它用于使与a
关联的数据准备好进行垃圾回收,因此在不需要时,内存/数据不会无效地绑定(bind)到a
。阅读更多here。
重要的是要注意,除非您实际上在重用“a”,否则这并不是必须的。如果不再使用该对象,GC会自动为您清除此数据。 TypedArray
之所以不同,是因为TypedArray
具有其他内部数据,必须将其他内部数据(称为StyledAttributes
)返回给TypedArray
以便以后重用。了解有关here的信息。
关于android - TypedArray中recycle()方法的用途是什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7252839/