热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android系统能创建多大的bitmap

面的示例中使用的是Config.ARGB_4444格式的bitmap,当时想着占两个字节,应该比Config.ARGB_8888的4个字节节省内存。实际操作来看应该是正确的,且看如下实验

面的示例中使用的是Config.ARGB_4444格式的bitmap,当时想着占两个字节,应该比Config.ARGB_8888的4个字节节省内存。
实际操作来看应该是正确的,且看如下实验:

  1. 在创建Bitmap是无论将其width和height初始化多么大,只要不执行绘图操作,都不会报OOM(out of memory)错误
  2. 通过Config.ALPHA_8单字节设置Bitmap,最后生成的图片只有一个黑色背景
  3. 通过Config.ARGB_4444两个字节设置,width*height 最大可以初始化到1006*1006*8,才能保证在绘图时不提示错误
  4. 通过Config.ARGB_8888四个字节设置,width*height 最大可以初始化到1006*1006*4,才能保证在绘图时不提示错误
  5. 在上面极限测试过程中,仅能保证第一次绘图操作正确,再来一次就OOM了


所以由此可以得出如下结论:

  1. Bitmap在创建时是没有分配内存的(当然了,如果是通过decode方法直接解析图像文件,应该是会即时分配的;网上一位高手说Android系统一次能读取的最大文件大小为1M,本人尚未验证)
  2. Bitmap在创建时是被全部置0的,而Config.ALPHA_8仅支持单色,所以最后除了黑色的背景外什么都没显示出来
  3. 1006*1006*8*2大约等于16M
  4. 1006*1006*4*4大约等于16M,所以Android系统一次最大可分配内存应该就是16M
  5. 表明资源没有得到即时释放,如果是独立线程绘图,可以通过kill线程释放

推荐阅读
author-avatar
天凉好个秋骄阳_213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有