ndroid位图内存不足总结,心得

<李>

<强>

<李>

<强>

<李>

<强>

<李>

<强>

<李>

<强>

<李>

<强>

<人力资源/>

<李>

inPreferredConfig指定解码到内存中,手机中所采用的编码,可选值定义在位图。配置中。缺省值是ARGB_8888。可以使ALPHA_8, ARGB_444, ARGB_8888, RGB_565,,,,,,,,,,,,,,,,,,,,,,,位图占用内存的算法如下:图片的宽*高*配置,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,如果配置设置为ARGB_8888,那么上面的配置为4,也就是4个字节的意思。一张480 * 320的图片占用的内存就是480 * 320 * 4字节只

<李>

inJustDecodeBounds如果设置为真,并不会把图像的数据完全解码,亦即decodeXyz()返回值为null,但是选项的outAbc中解出了图像的基本信息。

<李>

inSampleSize设置解码时的缩放比例。

<李>

inPurgeable设为true的话表示使用BitmapFactory创建的位图用于存储像素的内存空间在系统内存不足时可以被回收,在应用需要再次访问位图的像素时,系统会再次条用BitmapFactory解码器重新生成位图的像素数组,为了能够重新解码图像,位图要能够访问存储位图的原始数据。在inPugeable为假时表示创建位图的像素内存空间不能被回收,这样BitmapFactory在不停decodeByteArray创建新的位图对象,不同设备的内存不同,因此能够同时创建的位图个数可能有所不同,200个位图足以使大部分的设备出现OutOfMemory错误。当inPurgeable设为真时,系统中内存不足时,可以回收部分位图占据的内存空间,这时一般不会出现OutOfMemory错误

<李>

inInputShareable是否深拷贝,,

<人力资源/>



<李>

<李>

<李>

<李>

<李>

<李>

<李>

<人力资源/>

,,

,,,
,

虽然改为jpg,加载时存储的方式会默认为ARGB_565,本来是png为ARGB_8888,占用内存会减少一半,不过开销还是很大,用createBitmap放大时,改方法是java层的实现,效率太差。

 ndroid位图内存不足总结,心得“>想到cocos2d-x的瓦片地图,所以将背景图片分割为9份(自己用ps切),有些效果,不会每次切换场景都会挂,但是很多的征战地图,没全部切,所以当进入没切的场景时,还是会挂。</p> <p>,,,,,,,没才能有找到问题的源头,变小图了,加载时开销的内存确实减少不少。不过太多场景都去切不太实际,这样程序改变很大。可能会出现bug的风险。</p> <p> <img src=ndroid位图内存不足总结,心得