こんにちは、私はライブ壁紙を開発しており、多くのビットマップを使用しています。新しいライブ壁紙を約 1 週間テストしましたが、完全に稼働していましたが、市場にアップロードするとすぐに、この種の例外が発生し  続けjava.lang.OutOfMemoryErrorます。私はこの種のビットマップのライフサイクルを使用します:android.graphics.Bitmap.nativeCreateandroid.graphics.BitmapFactory.nativeDecodeAsset
次のような参照を作成します。
Bitmap dark = null;
Bitmap cave = null;
私はonCreateEngineそれらを次のように初期化します:
cave = BitmapFactory.decodeResource(getResources(), R.drawable.cave);
dark = BitmapFactory.decodeResource(getResources(), R.drawable.dark);
ここで例外をスローします。これらの画像の場合: 

 . 結局、次のようにキャンバスに描画します。
. 結局、次のようにキャンバスに描画します。
canvas.save();
canvas.drawBitmap(bg, new Matrix(), new Paint());   
canvas.drawBitmap(dark, new Matrix(), new Paint()); 
canvas.restore();
私は何をすべきか?暗い画像を1枚だけロードして、キャンバスの幅*高さの倍に描画する方が良いですか? または何か方法はありますか?と思っrecycleたり呼んだりonDestroy。しかし、例外がスローされるため、それらを呼び出すタイミングがわかりませんonCreate。画像が大きすぎますか? そして、なぜ私のデバイスではスムーズに動作し、他のデバイスでは例外をスローしているのでしょうか? ビットマップは 1484*1484 次元で、雲は 250*172 次元ですが、2^x * 2^x 次元である必要がありますか?