Android异常与性能优化相关面试问题-bitmap面试问题详解
2024-09-04 09:01:53
recycle:
对于Bitmap来说内存分为Java内存和Native内存,而当图片不用时建议调用一下recycle()方法来将native层的内存进行回收,下面看一下它的源码官方对它的解释:
LRU:
它是Least Recently Used【最近最少使用】的缩写,通常可以用做Bitmap的存储,会将最近最少使用的对象给清除出去,看一下它的源代码:
其中再提供了一些操作这个数据结构的方法:
而当缓存满的时候,则会调用trimToSize()方法将用得最久用得最少的缓存对象从队列中清除,并添加新的缓存对象,这也是LRU算法的核心,如下:
而对于put和remove方法的具体实现如下:
总结它的原理:它是采用LinkedHashMap来实现的,并给我们提供了添加、获取、删除缓存的方法,其中trimToSize()是会将最近最少使用的缓存将其清除,并将新的缓存添加到队列当中。
计算inSampleSize:
按尺寸进行图片的缩放,其大致代码如下:
缩略图:
它跟inSampleSize是息息相关的,具体对图片缩放的代码如下:
三级缓存:
第一次加载图片从网络上去加载,而此时还会将图片缓存到内存和本地SDCARD各一份,如果下次再次请求相同URL的图片时,则首先从内存去加载,如果内存加载失败则尝试从SDCARD去加载。
最新文章
- mysql 可以跨库查询
- Mac Vim + ctags 实现多目录跳转
- 转载和积累系列 - 深入理解HTTP协议
- idea 开发环境jdk崩溃
- MyEclipse2014中SVN的使用方法
- Python自动化运维之17、Python操作 Memcache、Redis、RabbitMQ
- 2、elasticsearch 的安装和插件的安装
- Sass编译Css
- [css 揭秘]:CSS揭秘 技巧(四):边框内圆角
- 关于URL隐藏index.php方法
- Linux切换工作目录命令:cd
- C++飞机大战
- HUD 1969:Pie(二分)
- gridview的编辑,更新,取消,自动分页等
- java学习-get和post请求
- jQuery+Ajax获取百度百科历史上的今天
- flask第十八篇——模板【2】
- Java 集合学习--HashMap
- OO的五大原则
- Foundation框架—时间处理对象NSDate