gpt4 book ai didi

android - 为什么要回收 TypedArray?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:04 26 4
gpt4 key购买 nike

This answer告诉我调用 recycle() TypedArray 的方法允许它被垃圾收集。我的问题是为什么 TypedArray 特别需要一种方法来对其进行垃圾回收?为什么它不能像普通对象一样等待被垃圾回收?

最佳答案

这是缓存目的所必需的。当您调用 recycle 时,这意味着该对象可以从此时开始重用。内部 TypedArray 包含很少的数组,因此为了不在每次使用 TypedArray 时分配内存,它被缓存在 Resources 类中作为静态字段。可以看TypedArray.recycle()方法代码:

/**
* Give back a previously retrieved StyledAttributes, for later re-use.
*/
public void recycle() {
synchronized (mResources.mTmpValue) {
TypedArray cached = mResources.mCachedStyledAttributes;
if (cached == null || cached.mData.length < mData.length) {
mXml = null;
mResources.mCachedStyledAttributes = this;
}
}
}

因此,当您调用 recycle 时,您的 TypedArray 对象只是返回到缓存中。

关于android - 为什么要回收 TypedArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13805502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com