• Android异常与性能优化相关面试问题-bitmap面试问题详解


    recycle:

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

    LRU:

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

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

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

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

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

    计算inSampleSize:

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

    缩略图:

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

    三级缓存:

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

  • 相关阅读:
    docker部署archery
    System系统类
    多变量的梯度下降
    matlab基础语法
    代价函数
    文件操作
    python集合关系
    python日记(四)字典的常见用法
    python日记(三)常用字符串用法
    python日记(二)购物车程序
  • 原文地址:https://www.cnblogs.com/webor2006/p/8973090.html
Copyright © 2020-2023  润新知