0

合計300kbの6つの画像をロードするAndroidゲームがあります。私はすでにこの記事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);
}
4

2 に答える 2

0

ゲームを閉じた後、常にビットマップを空にしてください

私は通常、このコードを使用します

bmp.recycle();
bmp = null;
System.runFinalization();
Runtime.getRuntime().gc();
System.gc();

ビットマップをリサイクルし、ガベージコレクターを使用します

于 2012-10-19T17:06:24.570 に答える
0

すべての非透過画像を png から jpeg に変換し、Photoshop で品質を 60 に下げることで、これを修正できました。画像の合計サイズが 300kb から 100kb に減りました。画質の低下が気になりましたが、スマートフォンでもタブレットでも画質の低下は見られませんでした。

于 2012-10-22T12:19:33.150 に答える