Android-Bitmap的getByteCount()和getAllocationByteCount()的区别

一、不复用的情况

如果不使用内存复用,这两个方法是一样的效果。

二、复用的情况

在通过复用 Bitmap 来解码图片时,那么 getByteCount() 表示新解码图片占用内存的大 小,getAllocationByteCount() 表示被复用 Bitmap真实占用的内存大小。

可以认为:

getByteCount()只是图片的大小
getAllocationByteCount()是Bitmap的大小
因为Bitmap可以复用,所以Bitmap可以放入不同的图片,当Bitmap放入更大的图片的时候,就会占用更大的内存,但是这个时候如果对Bitmap对象进行复用,放入一张小图片,并不会改变Bitmap的大小。

举例说明:

比如,最初Bitmap放入一张大小为4M的图片,这个时候Bitmap占用了4M的内存,然后当这张图片使用完成之后,对Bitmap进行复用,放入一张1M的图片,这个时候其实只是复用了Bitmap之前内存大小的四分之一,如果使用getByteCount(),得到的其实就是1M,但是这个时候Bitmap对象实际占用内存其实还是4M,虽然对Bitmap进行了复用,但是并不会因为放入的图片变小了而改变了原本Bitmap对象占用内存的大小,所以getAllocationByteCount()返回的是4M

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在日常开发中,可以说和Bitmap低头不见抬头见,基本上每个应用都会直接或间接的用到,而这里面又涉及到大量的相关知...
    Android高级工程师阅读 8,425评论 0 4
  • 一、Bitmap 内存回收 从3.0开始,Bitmap 像素数据和 Bitmap 对象一起存放在 Dalvik 堆...
    秀花123阅读 5,890评论 1 7
  • Bitmap使用需要注意哪些问题 ? 要选择合适的图片规格(bitmap类型):通常我们优化Bitmap时,当需要...
    Vinson武阅读 3,077评论 0 0
  • 前言 在Android的内存优化中,对Bitmap的优化绝对是主角,因为Bitmap对内存的影响很大,稍有不慎就很...
    事多店阅读 9,234评论 1 15
  • 一、基础 Bitmap指的是一张图片,可以是png格式,也可以是jpg等其它常见的图片格式。 1.加载方式 And...
    TomyZhang阅读 2,206评论 0 0

友情链接更多精彩内容