我想在游戏画布上使用很多位图。
我不能Recycle
位图,因为我必须在整个部分使用位图。
为我的基于画布的游戏应用程序提供一些指导来优化代码以处理许多位图,同时提高性能。
目前我正在使用以下代码从drawable资源中获取位图
BitmapFactory.Options bfOptions=new BitmapFactory.Options();
bfOptions.inSampleSize = 1;
bfOptions.inDither=false; //Disable Dithering mode
bfOptions.inPurgeable=true; //Tell to gc that whether it needs free memory, the Bitmap can be cleared
bfOptions.inInputShareable=true; //Which kind of reference will be used to recover the Bitmap data after being clear, when it will be used in the future
bfOptions.inTempStorage=new byte[16 * 1024];
myBitMap=BitmapFactory.decodeResource(getResources(),ID, bfOptions);
我目前正在关注此code进行画布绘制。
图像是精灵的,所以在尝试加载许多精灵时会给出问题。
在此代码链接 MainGamePanel.java 是我正在做的事情。对于位图解码我使用上面的方法。
答案 0 :(得分:1)
如果你必须使用很多位图并且位图可以轻松搞定,例如,它是从互联网上下载的,你可以尝试使用SoftReference来引用它而不是强引用。你试过这种方法吗?
答案 1 :(得分:1)
对于非常有用的优化建议,了解有关您想要优化的内容(绘图速度,内存占用量)以及游戏画布应满足的要求以及要绘制的图像类型的更多详细信息将非常有用。 (大,小,重复,他们可以打破,平铺可能)。
我可以考虑一些你可以考虑的一般性想法: