如何处理android创建图片时的OOM问题
这个问题已经困扰很久了。没有得到好的解决方法。因为程序中有个功能必须动态创建bitmap。有没有好的办法。
在发这个帖子之前已经google百度过N次,发现那些帖子都是千篇一律的设置option。求有效的原创回帖。
[解决办法]
是第一次创建bitmap的时候就OOM,还是多次创建的时候才OOM的?
如果是第一次创建的时候就出错,那试试在创建bitmap的时候不要把public static Bitmap createBitmap (int width, int height, Bitmap.Config config)的第三个参数写成ARGB_8888,换成其他的值。
如果是多次创建的时候才OOM,那么一定要想办法,在合适的地方,对你已经创建的bitmap进行recycle操作。
[解决办法]
几十张而且长宽都是屏幕大小一样当然会死。。。
你不能这样一下子把所有的Bitmap都创建不然64M的机子都扛不住,你既然说一张图片就有屏幕大小那就是说一次只能显示一张,你就做2张空Bitmap,一张用来显示当前屏幕,而另一张是作为等待显示的图片,每次换图片时就解析新的图片赋值给等待显示的图片,再做个动画什么的把当前显示的图片移出屏幕而等待显示的图片放进屏幕,这样你只用2张Bitmap就能显示所有图片的内容了(注意recycle图片,因为一般用BitmapFactory解析出来的图片大小都不太符合实际需求,都会用Canvas或者CreateBitmap裁剪一下,此时旧的图片依旧会占用内存导致内存溢出)