浅析IM即时通讯开发中Bitmap到底占用多大内存?

本文探讨了Android中Bitmap内存占用的问题,解析了Bitmap.getByteCount()方法的计算原理,以及屏幕密度如何影响Bitmap的实际内存消耗。通过实例计算揭示了Bitmap内存占用的详细步骤,包括密度转换和精度调整的影响。
摘要由CSDN通过智能技术生成

本文涉及到屏幕密度的讨论,这里先要搞清楚 DisplayMetrics 的两个变量,简单来说,可以理解为 density 的数值是 1dp=density px;densityDpi 是屏幕每英寸对应多少个点(不是像素点),在 DisplayMetrics 当中,这两个的关系是线性的:为了不引起混淆,本文所有提到的密度除非特别说明,都指的是 densityDpi,当然如果你愿意,也可以用 density 来说明问题。另外,本文的依据主要来自 android 5.0 的源码,其他版本可能略有出入。

系统已提供Bitmap内存占用计算方法

做移动客户端开发的朋友们肯定都因为图头疼过,说起来曾经还有过 leader 因为组里面一哥们在工程里面加了一张 jpg 的图发脾气的事儿,哈哈。为什么头疼呢?吃内存呗,时不时还给你来个 OOM 冲冲喜,让你的每一天过得有滋有味(真是没救了)。那每次工程里面增加一张图片的时候,我们都需要关心这货究竟要占多大的坑,占多大呢?

Android API 有个方便的计算方法:
    
public final int getByteCount() {
    // int result permits bitmaps up to 46,340 x 46,340
    return getRowBytes() * getHeight();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值