我有一个 android 游戏,可以加载 6 张图像,总共 300kb。我已经阅读并实现了这篇文章http://developer.android.com/training/displaying-bitmaps/load-bitmap.html虽然它有点帮助,但它并没有 100% 解决我的问题。
当游戏第一次加载时,它运行得很好。没有错误或任何东西。然后当您关闭游戏或按下主屏幕按钮并稍后返回游戏时,它会出现内存不足错误,但只是有时。在我的简历中,我只是开始备份游戏线程。我没有加载任何图像或类似的东西。当然,我不能拥有加载 6 个或更多图像的唯一游戏吗?
我的简历
@Override
protected void onResume(){
try{
game.setIsPaused(false);
game.startSounds();
game.threadStart();
super.onResume();
}
在自己的线程中加载我的图像
bg = bt.resizeBitmapPercent(bt.createBitmap(R.drawable.bg, context, options), imgPercentWidth, imgPercentHeight);
overlay = bt.resizeBitmapPercent(bt.createBitmap(R.drawable.overlay, context, options), imgPercentWidth, imgPercentHeight);
reel = bt.resizeBitmapPercent(bt.createBitmap(R.drawable.reels, context, options), imgPercentWidth, imgPercentHeight);
payOutBG = bt.resizeBitmapPercent(bt.createBitmap(R.drawable.payout, context, options), imgPercentWidth, imgPercentHeight);
achievement = bt.resizeBitmapPercent(bt.createBitmap(R.drawable.achievement, context, options), imgPercentWidth, imgPercentHeight);
调整位图大小和创建位图的方法
public Bitmap createBitmap(int id, Context context, BitmapFactory.Options options){
return BitmapFactory.decodeResource(context.getResources(), id, options);
}
public Bitmap resizeBitmapPercent(Bitmap bitmap, float w, float h){
float newWidth = bitmap.getWidth()*w;
float newHeight = bitmap.getHeight()*h;
float scaleWidth = (float) newWidth / bitmap.getWidth();
float scaleHeight = (float) newHeight / bitmap.getHeight();
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
return Bitmap.createBitmap(bitmap, 0, 0,bitmap.getWidth(), bitmap.getHeight(), matrix, true);
}