recycle:

对于Bitmap来说内存分为Java内存和Native内存,而当图片不用时建议调用一下recycle()方法来将native层的内存进行回收,下面看一下它的源码官方对它的解释:

LRU:

它是Least Recently Used【最近最少使用】的缩写,通常可以用做Bitmap的存储,会将最近最少使用的对象给清除出去,看一下它的源代码:

其中再提供了一些操作这个数据结构的方法:

而当缓存满的时候,则会调用trimToSize()方法将用得最久用得最少的缓存对象从队列中清除,并添加新的缓存对象,这也是LRU算法的核心,如下:

而对于put和remove方法的具体实现如下:

总结它的原理:它是采用LinkedHashMap来实现的,并给我们提供了添加、获取、删除缓存的方法,其中trimToSize()是会将最近最少使用的缓存将其清除,并将新的缓存添加到队列当中。

计算inSampleSize:

按尺寸进行图片的缩放,其大致代码如下:

缩略图:

它跟inSampleSize是息息相关的,具体对图片缩放的代码如下:

三级缓存:

第一次加载图片从网络上去加载,而此时还会将图片缓存到内存和本地SDCARD各一份,如果下次再次请求相同URL的图片时,则首先从内存去加载,如果内存加载失败则尝试从SDCARD去加载。

最新文章

  1. mysql 可以跨库查询
  2. Mac Vim + ctags 实现多目录跳转
  3. 转载和积累系列 - 深入理解HTTP协议
  4. idea 开发环境jdk崩溃
  5. MyEclipse2014中SVN的使用方法
  6. Python自动化运维之17、Python操作 Memcache、Redis、RabbitMQ
  7. 2、elasticsearch 的安装和插件的安装
  8. Sass编译Css
  9. [css 揭秘]:CSS揭秘 技巧(四):边框内圆角
  10. 关于URL隐藏index.php方法
  11. Linux切换工作目录命令:cd
  12. C++飞机大战
  13. HUD 1969:Pie(二分)
  14. gridview的编辑,更新,取消,自动分页等
  15. java学习-get和post请求
  16. jQuery+Ajax获取百度百科历史上的今天
  17. flask第十八篇——模板【2】
  18. Java 集合学习--HashMap
  19. OO的五大原则
  20. Foundation框架—时间处理对象NSDate

热门文章

  1. 【POJ - 3262】Protecting the Flowers(贪心)
  2. python手撸桌面计算器
  3. Apache配置同一IP使用多域名对应多个网站
  4. php栈的定义和出栈、入栈的实现
  5. 201709-3 JSON查询
  6. java爬取并下载酷狗TOP500歌曲
  7. 句子反转——牛客刷题(java)
  8. (二)创建基于maven的javaFX项目
  9. URL的 ? 和 # (hash),如何将参数保存在URL中,用于刷新获取之前的变量?
  10. 浅谈RPC框架