现象:
做一个小动画,实现方式为每50ms更新一张bitmap, 循环播放,从而达到动画效果。
问题:
发现动画会卡,有时卡在第7帧,有时卡在第10帧,不定。
研究:
使用traceview 工具,发现原来卡的时间 Java虚拟机在做gc (垃圾回收)操作。
跟踪代码,原来每次更新图片时,会创建一个Bitmap,而相关API此时会调用 gc 函数!
解决:
修改代码,预先生成需要的Bitmap, 循环时直接使用。 测试发现,问题解决!
本文介绍了一种在循环播放图片实现动画效果时遇到的卡顿问题,并通过预先生成Bitmap的方法解决了该问题。发现动画卡顿的原因在于每更新一张图片时触发了Java虚拟机的垃圾回收。
现象:
做一个小动画,实现方式为每50ms更新一张bitmap, 循环播放,从而达到动画效果。
问题:
发现动画会卡,有时卡在第7帧,有时卡在第10帧,不定。
研究:
使用traceview 工具,发现原来卡的时间 Java虚拟机在做gc (垃圾回收)操作。
跟踪代码,原来每次更新图片时,会创建一个Bitmap,而相关API此时会调用 gc 函数!
解决:
修改代码,预先生成需要的Bitmap, 循环时直接使用。 测试发现,问题解决!
454
2770
1443

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