我创建了一个GalleryViewImageView,当在图库中单击某个项目时,它们会显示更大的图像。我已经使用下面的代码来实现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/

10-09 13:00