首页 > 代码库 > 为什么需要在TypedArray后调用recycle
为什么需要在TypedArray后调用recycle
当我们没有在使用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
为什么需要在TypedArray后调用recycle
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。