0

我正在使用以下方法加载多个位图(从全屏图像到单个精灵帧的大约 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 被调用了几次(不是很多),我真的不知道为什么会发生这种情况,但认为这会很好无论如何都要练习解决这个问题。

4

0 回答 0