我正在使用以下方法加载多个位图(从全屏图像到单个精灵帧的大约 40 个不同大小的位图):
Bitmap graphic = BitmapFactory.decodeResource(res, R.drawable.mygraphics);
然后我使用以下方法缩放它们(因此它们在任何设备上相对于屏幕看起来都相同):
Bitmap scaledGraphic = Bitmap.createScaledBitmap(mygraphics, screen.width()/2, screen.height()/2, true);
上面的例子只是为了将图像放大/缩小到屏幕尺寸的四分之一。
然后我在我的 onDraw() 方法中引用缩放的图像:
canvas.drawBitmap(scaledGraphic, X, Y, null);
这一切都可以正常工作,并且在各种屏幕尺寸上看起来都不错。
我的问题是,据我了解,createScaledBitmap 在内存中从原始位图创建了另一个位图(而不仅仅是缩放原始位图)。如果是这种情况,一旦创建了缩放位图,我真的不再需要原始位图了,有什么办法可以从内存中删除它吗?
我需要打电话给它回收吗?我只是在尝试优化我的代码,并且在动画卡顿等方面存在很多问题...... GC 被调用了几次(不是很多),我真的不知道为什么会发生这种情况,但认为这会很好无论如何都要练习解决这个问题。