您的位置:首页 > 其它

为什么需要在TypedArray后调用recycle

2015-06-16 23:46 337 查看
转载自/article/4763116.html

当我们没有在使用TypedArray后调用recycle,编译器会提示“This TypedArray should be recycled after use with #recycle()”。

官方的解释是:回收TypedArray,以便后面重用。在调用这个函数后,你就不能再使用这个TypedArray。

在TypedArray后调用recycle主要是为了缓存。当recycle被调用后,这就说明这个对象从现在可以被重用了。
TypedArray
内部持有部分数组,它们缓存在
Resources类中的静态字段中,这样就不用每次使用前都需要分配内存。你可以看看
TypedArray.recycle()
中的代码:


1 /**
2  * Give back a previously retrieved StyledAttributes, for later re-use.
3  */
4 public void recycle() {
5     synchronized (mResources.mTmpValue) {
6         TypedArray cached = mResources.mCachedStyledAttributes;
7         if (cached == null || cached.mData.length < mData.length) {
8             mXml = null;
9             mResources.mCachedStyledAttributes = this;
10         }
11     }
12 }


参考链接:

http://stackoverflow.com/questions/13805502/why-do-you-have-to-recycle-a-typedarray

http://developer.android.com/reference/android/content/res/TypedArray.html#recycle%28%29
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: