设为首页
收藏本站
开启辅助访问
切换到窄版
登录
立即注册
中问网首页
我的收藏
站长博客
搜索
搜索
本版
帖子
用户
第一问答网
»
论坛
›
中问网
›
问答
›
Bitmap之内存占用计算和加载注意事项
返回列表
发新帖
Bitmap之内存占用计算和加载注意事项
[复制链接]
11
|
0
|
2015-8-12 11:34:00
|
显示全部楼层
|
阅读模式
本帖最后由 w39 于 2015-8-24 16:34 编辑
在手机中图片一般都是指Bitmap图片,为什么要说Bitmap呢?因为大家在开发应用的时候,都会使用一些图片来表现UI,用户也喜欢看图片,看文字获取信息太慢并且不直观,如果美工设计的好,看图片基本上不怎么看你的文字内容就知道你要表达什么,例如所有的购物网站都会编辑很多商品的配图来呈现给用户,由此可见图片在应用程序中的常见和重要。只要说到图片就不能离开如何避免OOM这个主题,因为在处理很多图片时很容易出现OOM,那么学习图片处理就显得尤为重要了,下面就让我们一步一步学习图片的相关知识。Bitmap图片占用内存计算:
Bitmap图片在加载到内存的时候是按照:宽*高*像素点位数来计算的。你可以把图片看成是由width行、height列的矩阵组成,每一个矩阵元素代表一个像素点,每一个像素点都是1byte整数倍的数据,这个数据越大,表示的色彩就越丰富,图片的显示质量就越高。Bitmap中有一个枚举类Config用来配置图片的压缩格式,代表每个像素是用多大的数据来存储的,数值越大能够存储的颜色信息就越多,也就越丰富,显示效果也就越好。Config.ALPHA_8是1 byte,Config.RGB_565和Config.ARGB_4444都是2 bytes,Config.RGB_565没有Alpha值所以多用来配置没有透明度的图片,Config.ARGB_8888是4 bytes,一般图片都是按照这个来配置的。下面是获取配置的代码:1.static int getBytesPerPixel(Config config) { 2.if (config == Config.ARGB_8888) { 3.
return 4; 4.} else if (config == Config.RGB_565) { 5.
return 2; 6.} else if (config == Config.ARGB_4444) { 7.
return 2; 8.} else if (config == Config.ALPHA_8) { 9.
return 1; 10. } 11. return 1; 12. } 对使用图片需要注意进行介绍:1、android系统自身的问题。android系统给每一个应用分配了一定的内存空间,分配了多少要看厂家和机型,数值可以通过Runtime类获取,Runtime.getRuntime()获取实例,然后通过maxMemory()方法获取系统可为APP分配的最大内存,totalMemory() 获取APP当前所分配的内存heap空间大小,freeMemory()获取当前可用的内存,当被耗尽时会自动扩张,但是不会超过maxMemory。2、需要多大的照片。很多图片其实在手机上显示的时候不需要完全把原图加载到内存中,比如我手机相机拍了一张照片是4208*3120的,加载到内存中占用的内存就是52M,这是很恐怖的,两张照片差不多就把你的app内存给耗光了。一般情况下你都需要对需要加载的图片进行处理,这个处理主要是减小图片尺寸,降低分辨率,比如你的控件显示就是100*100的大小,那你就要把图片缩小到100*100。
3、及时释放内存。安卓2.3.3(API级别10)之前,Bitmap像素数据和Bitmap对象是分开存储的,像素数据是存储在native memory中,对象存储在Dalvik heap中,native memory中的像素数据不是以一种可预见的方式释放,可能导致应用程序暂时超过其内存限制和崩溃,所以在Android2.3.3(API 10)之前你必须要调用recycle()方法来释放掉内存避免出现OOM,当然前提是确定这个bitmap不再使用,否则会出现 "Canvas: trying to use a recycled bitmap". 在Android3.0(API 11)之后,Bitmap的像素数据和Bitmap对象一起存储在Dalvik heap中,所以我们不用手动调用recycle()来释放Bitmap对象,内存的释放都交给垃圾回收器来做。
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
千问
主题
0
回帖
4882万
积分
论坛元老
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
论坛元老, 积分 48824836, 距离下一级还需 -38824837 积分
积分
48824836
加好友
发消息
回复楼主
返回列表
问答
热门排行
1
用硫磺皂洗脸可以去豆吗
2
小女左眼老是有眼屎
3
妇科,月经相比前一个月提前10天这正常不
4
結婚一年未懷孕,檢查結果如照片,請問治療
5
医生,我来完月经的第一天,有臭味怎么回事
6
做完人流几天感觉浑身发热?
7
夏天吹空调膝盖腰肚子都凉凉的其他地方
8
最近一个月开始便秘。而且很严重。都是靠药
9
这几天阴部有点干痒,分泌物不多,今天稍微
10
月经有血块"经期只有25、26天""有问
11
喝酒后脸蛋上出现红点点
12
听说颈椎不好会头部发油脱发怎么才能养
13
为什么做爱的时候,女的会小肚子疼。
14
没有怀孕但是不来月经
15
昨天夜里睡觉忘盖被子受凉了,早上起来胃有
16
怀孕八周,肚子每到晚上总是很胀,
17
生完孩子后体重难以恢复。
18
每个宝宝都要剃胎头吗?
19
早上腰痛醒
20
我的龟头怎么还没有出来,是怎么回事
21
儿子一直比较结实,可自从进行了腺样体切除
22
今年5月起开始出现左脊梁疼左手臂疼麻,医
23
原因与戒口治疗
24
外面安静的时候耳鸣症状会更明显,是突发性
25
气色不好,脸色偏黄弯腰头晕肠胃不好
26
出汗很多。干点活。一身都是汗水
27
青春期脸上的黑头能靠吃药控制吗?
28
今天新配了眼镜"戴了之后头晕"取了之后还
29
服用米非司酮片六小时吃散列通退烧会影响避
30
身上来之前胸疼"来的当天肚子超疼"并且来
31
我没有怀孕、但是我年龄不大可以打黄体酮吗
32
去年做了通液"至今还未怀孕"不知是什么原
33
本人为16岁学生两年来一直有较明显的黑
34
月经周期都是在28至30天,排卵准确吗?
35
差不多半年以上打嗝呃气…胃不痛…看过医生
36
男性手淫,,会不会引起哪些不正常,比喻说,早射
37
熱咳喝金銀花行不行
38
脸上总是起疙瘩,有的还是毒疙瘩。
39
老婆容易脱发,缺少啥营养
40
糖尿病吃什么保健品可增加免疫力
41
自从我上了高二开始就一直不断脱发,而且我
42
外阴一到晚上就瘙痒
43
为什么我的双脚小腿这里到了晚上睡觉就会很
44
三十多天的周期了也没来例假,一般都是二十
45
宝宝总是揉鼻子怎么回事?
46
酒后头晕恶心
47
你好,我是生孩子后第二个月了,突然今天白
48
脸很敏感,一般情况会发红发烫,有的时候痒
49
为什么白带会很白呢?
50
被别人传染的感冒,咽喉发炎,咳嗽!有鼻涕
51
眼睛没事,上眼皮经常红肿,不管他的话几天
52
成人晚上体温37度4算发烧么?
53
医生,脚气怎么办,用什么药好啊
54
我老婆预产是10月23日!现在落半盘了!
55
女友服用了产复康、我想知道她是什么状况
56
我已经有好多次梦游的情况了,比如我前一晚
57
药流后十天左右突然很多比月经量多,这是什
58
跳蚤咬了怎么办??
59
我的脸上长的豆豆都是红红大大的,痛痛硬硬
60
龟头包皮这总是干干的有时候还觉得痒
61
医生您好!请问下安眠药都有什么名字,还
62
不知道这种药具体叫什么名字
63
前两天腹胀,味了两包妈咪爱,现在肚子是不
64
我8月7号来的月经,18号和老公在一起现
65
例假过后半月乳房开始胀痛请问是怎么回事?
66
十岁孩子眼睛涩涩的,还怕强光是怎么回事
67
怀孕的时候同房对胎儿有什么影响吗?要注意
68
请专业懂狂犬病的医生进好多不懂
69
我孩子十二岁了,扁桃体增生需要做微创手术
70
婴儿十一个月,舌系带短,什么年纪手术好
71
白天总是犯困,睡得再早也是这样,什么原因
72
我的宝宝刚满月两天,有时一天拉五六次,第
73
想知道是哪天怀上的?
74
阴道瘙痒,有轻微灼痛感。
75
月经只来了两天就干净了
76
前四天大便正常,每天3次左右,从昨天开始
77
龟头长一个疙瘩
78
前天用沐浴露洗完澡以后阴茎皮内测发痒还有
79
晚上睡觉的时候侧左边左边就鼻子就不通,侧
80
医生,您好,我是一名男性,最近发现龟头痒
81
屁股红痒是什么原因
82
医生你好,我就是好几天不大便,上一次像挤
83
由于体重重,经常打篮球,脚后跟用力按压有
84
药流流不干净,可以不做手术么
85
运动后膝盖肿胀疼痛,严重时走路都困难,如
86
阴茎一直勃起,连续二天自慰自慰完还是勃起
87
好象是刺猴医生可不可以不做冷冻治疗啊
88
快走慢走哪个更减脂肪,我体重一百六十斤。
89
尿检阳性是怎么回事?
90
你好。便秘怎么根除。
91
青春豆制疗一般要花多少钱?属于中度型的。
92
三年前阴囊部位瘙痒,用了999皮炎平后好
93
验尿有的时候尿蛋白1有的时候显示-
94
里面半个月了,头顶处的头发特别油,刚洗还
95
你好我被狗咬了没打疫苗
96
为什么总会全身无力不想动
97
怎么吃拉一颗避孕药一直流血