1.问题描述
一个雪花效果,在Android4.0以下系统正常运行,但是在Android4.1上异常退出。
2.问题定位
看一段代码
private Bitmap mflakeImage = null;
private Bitmap mflakeImageTemp = null;
mflakeImageTemp = BitmapFactory.decodeResource(resources, R.drawable.snow_1);
mflakeImage = Bitmap.createScaledBitmap(this.mflakeImageTemp, mflakeImageTemp.getWidth(),
mflakeImageTemp.getHeight(), true);
Log.d("cjp", "mflakeImageTemp=" + mflakeImageTemp);
Log.d("cjp", "mflakeImage=" + mflakeImage);
this.mflakeImageTemp.recycle();
Log.d("cjp", "mflakeImage.isRecycled()=" + mflakeImage.isRecycled());
上面是一段简化后的代码,用于说明问题就行了:即从一张Bitmap,利用createScaledBitmap得到其另一张缩放的Bitmap, 但是其实并没有缩放!
上段代码在Android4.0以下版本,mflakeImageTemp和mflakeImage是不同的两张图,但是在Android4.1上却是一张图<

本文探讨了一个Android应用在不同版本下Bitmap处理的差异,导致在Android4.1系统上出现异常。问题源于同一Bitmap在4.1版本被错误地回收,引发程序崩溃。作者提醒开发者注意Android SDK更新可能带来的变化,并建议在升级后审阅代码以避免类似问题。
最低0.47元/天 解锁文章
955

被折叠的 条评论
为什么被折叠?



