当我们没有在使用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

作者:kissazi2 
出处:http://www.cnblogs.com/kissazi2/ 
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载:http://www.cnblogs.com/kissazi2/p/4049982.html

为什么需要在TypedArray后调用recycle相关推荐

  1. Android之TypedArray 为什么需要调用recycle()

    转自:http://blog.csdn.net/Monicabg/article/details/45014327 在 Android 自定义 View 的时候,需要使用 TypedArray 来获取 ...

  2. DOM中setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。

    setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式. <html> <head> <script type="text/javascript ...

  3. 利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API

    微软动态CRM专家罗勇 ,回复337或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me. 配置Dynamics 365 & PowerApps 支 ...

  4. jqweui组件,confirm嵌套prompt后调用一个方法中的alert无法关闭掉

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 解决方法 前言 jqweui组件,confirm嵌套prompt后调用一个方法中的alert无法关闭掉 提示:以下是本 ...

  5. python导入包后调用提示unresolved reference

    python导入包后调用提示unresolved reference 问题展示 解决过程 解决办法概述:从project文件夹移动至虚拟环境文件夹(venv library root) 问题展示 im ...

  6. python语言中函数在调用前必须先定义吗_Python函数必须先定义,后调用说明(函数调用函数例外)...

    java开发者在定义类中的方法时,不会关心方法的定义相对于调用语句的位置. 但是python中需要注意: 函数必须先定义.后调用(函数调用函数例外). 如下为示例说明: 1.python函数的应用一般 ...

  7. android .recycle(),Android系统中Bitmap是否有调用recycle方法的必要性

    Bitmap有一个recycle方法,意思很简单,回收Bitmap的空间.但是我们知道java有自己的垃圾回收机制,所以为什么BitaMap还需要这样一个专门的回收方法呢? 无需调用bitmap的理由 ...

  8. Android App ~ Bitmap 调用 recycle() 回收内存

    Bitmap调用recycle? When? Bitmap有一个recycle方法,意思很简单,回收Bitmap的空间. Q 1: Bitmap是否有调用recycle方法的必要性? A: 嵌入式系统 ...

  9. c++中delete对象后 调用成员函数_C++类的特殊成员函数及default/delete特性

    本文包含以下内容 1. C++的四类特殊成员函数介绍,重点介绍拷贝构造函数和拷贝复制运算符 2. C++11中的default/delete特性 本文内容侧重个人理解,深入理解其原理推荐https:/ ...

最新文章

  1. python3.6.2怎样安装,python 3.6.2 安装配置方法图文教程
  2. 【CyberSecurityLearning 18】ACL及实验演示
  3. layui 数字步进器_图解全新奔驰S级:从“传统豪华”向“数字豪华”转型
  4. AttributeError: module 'sys' has no attribute 'maxint'
  5. 菜刀php教程,Weevely(php菜刀)工具使用详解
  6. Kubernetes持久化存储2——探究实验
  7. push bullet matlab,PushBullet(推送)下载|PushBullet(推送)安卓版v16.5.4 官方最新版_软件侠下载站...
  8. gsonformat安装
  9. DeepMatch交友机器人:原来姹紫嫣红开遍,缘来就是你
  10. 代码走查(codereview)如何执行才能提升代码质量
  11. 闪讯利用openwrt路由器拨号教程(五)
  12. linux 拔网线重启才可以上网_Linux断开网线后,再插上网线,网络仍然无法PING通,只有重启网络服务后才能PING通...
  13. 微信html5展示页,H5科普|微信H5页面的展示形式
  14. 企业使用云平台,存在的三个问题
  15. 小程序实现图片预加载(图片延迟加载)
  16. 【Windows下设置全局以管理员身份运行cmd】
  17. 此应用程序无法启动,因为没有Qt平台插件可以初始化,重新安装应用程序可能会解决此问题
  18. oracle的rowid和rownum,【oracle rowid与rownum的使用与区别 】
  19. 数据分析excel计算环比与同比以及常用函数:
  20. 【IoT】如何使用软件加密(文件夹加密工具.exe),并破解工具

热门文章

  1. android 设置textview中划线效果
  2. Windows Phone 开发工具包7.1公测版新特性
  3. Strategy模式
  4. evoc服务器长鸣报警显示正常,UPS电源故障灯亮,蜂鸣器长鸣报警怎么办
  5. 同时打包多个场景_人机CP模式闯入“打包界”,智能设备让每一厘米纸箱物尽其用...
  6. 微博鸿蒙测试版,不久前华为宣布,将会在6月2日举... - @姬永锋 的微博精选 - 微博国际站...
  7. conda 装tensorboardx_【工欲善其事】TensorboardX的使用
  8. 【Java】方法的重载 (求最大值方法的重载+求和的重载)
  9. HDU2199(二分算法)
  10. 关于学习Python的一点学习总结(4->成员资格->list->列表操作)