作者baobomb (baobomb)
看板AndroidDev
标题[问题] 关於载入多张图片时out of memry
时间Wed Dec 25 09:44:59 2013
小弟不才 最近正在学习开发app
遇上了一个小问题
使用bitmap读入sd卡中的图档
并且让ImageView取得图片并显示後
下一步我设置了一个button
并监听按钮 当我按下按钮时触发事件
更换ImageView的图档
但是每当我按下button触发了更换图片的事件後
就会出现out of memory 的错误
上网google後 大部份提供的意见
都是因为图档过大 造成调用记忆体时记忆体不足 建议的方法都是适时使用recycle()
来做记忆体回收的动作
但是照着建议实做了一次
在ImageView自bitmap取得图片後
就释放了bitmap所占用的记忆体
然後再触发更换图片的按钮
却还是有一样的问题
请问该如何解决呢 不知道有没有大大能够提供一点想法
手机排版差请见谅
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.90.203
1F:推 btsken:版上搜寻image loader 12/25 10:36
2F:→ ted66:bitmap simplesize条2看看 12/25 11:51
3F:→ baobomb:simplesize 这我试过 缩小图片尺寸到原始的四分之一了 还 12/25 14:24
4F:→ baobomb:是会报错 12/25 14:24
5F:→ baobomb:从ddms给的讯息看来 应该是bitmap 12/25 14:25
6F:→ baobomb:每次取得图片资料 都会调用ram ram不足导致 12/25 14:26
7F:推 aiweisen:虽然我不是载入图片 我是上传大档案发生OOM 12/25 21:16
8F:→ aiweisen:我都初找到的OOM大部份都是在说明图片的问题 12/25 21:16
9F:→ aiweisen:最後用偷吃步的方式 去AndroidManifest中的application 12/25 21:17
10F:→ aiweisen:後面加上 android:largeHeap="true" 暂时解决OOM 12/25 21:18
11F:→ aiweisen:<application ... android:largeHeap="true"> 12/25 21:19
12F:→ aiweisen:我用这个方式 大概可以一次上传50M大小的档案 12/25 21:19
13F:→ aiweisen:但是largeHeap我当初找的是说 每个手机提供的heap不同 12/25 21:20
14F:→ aiweisen:所以这个不是最佳解= = 12/25 21:20
15F:推 zxc190:!! android:largeHeap="true" 楼上你怎麽不早说呢XD 12/25 21:44
16F:→ aiweisen:因为我记得使用这个方法好像有风险 所以当初观望不提 哈 12/25 21:49
17F:→ zxc190:风险是..? 12/25 23:04
18F:→ zxc190:google了一下会占用记忆体 其他app可能会有问题 12/25 23:14
19F:→ zxc190:真的还假的=.= 12/25 23:15
20F:→ zxc190:还有只能在3.0以上使用 这可能有点不太好XD 12/25 23:17
21F:→ zxc190:更正一下 上面这一点还要查证 12/25 23:30
22F:→ baobomb:ai大的方法真不错 感谢 12/27 13:23
23F:→ baobomb:另外後来解决的办法 是把图片的尺寸解析度做更改 缩小档 12/27 13:24
24F:→ baobomb:案大小 让每次读入档案时 不会oom 不过还是要适时的 12/27 13:25
25F:→ baobomb:释放记忆体 至於一次性载入多个档案时 我目前是 12/27 13:25
26F:→ baobomb:采用了开多个thread去读档 等到需要取用档案时在写入 12/27 13:26
27F:推 cloudfly:搜寻universal-image-loader看看 12/28 01:12