2 zhenweiyu zhenweiyu 于 2015.07.20 22:40 提问

Android中Bitmap.createBitmap引起的频繁GC如何解决

我是在onDraw当中绘制一个动画使一个Bitmap对象同时旋转和移动,于是就使用matrix,matrix完就马上执行Bitmap.createBitmap()方法生成一个新的bitmap并invalidate()通知onDraw重新绘制,但是发觉log中的GC相当的频繁,请问这样会有什么安全隐患,同时求优化的方法,谢谢!

3个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.07.20 22:59
已采纳

1、最终还得根据业务来,少创建bitmap,如果不免不了,不使用的时候立马回收,mBitWallPaper.recycle(); mBitWallPaper = null;
2、在允许范围内,尽量降低图片质量和大小,包括色彩饱和度

danielinbiti
danielinbiti 回复iamxxyu: 那再onDraw中做判断,如果图片没变化,就别每次createBitmap,如果图片有变动,则生成新的后,回收前面一个。正在使用的是不能回收,回收就报错了。你就降低创建频率
2 年多之前 回复
zhenweiyu
zhenweiyu 主要纠结就是recycle()使用不了,因为我做的这个动画是循环连续移动的,间隔都是毫秒级的,一旦出现了recycle就报错了,说尝试使用了一个被回收的bitmap。。
2 年多之前 回复
CSDNXIAON
CSDNXIAON   2015.07.20 22:44

android 由解析bitmap引起的内存溢出问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

caozhy
caozhy   Ds   Rxr 2015.07.20 23:09
Csdn user default icon
上传中...
上传图片
插入图片