こんにちは、私はライブ壁紙を開発しており、多くのビットマップを使用しています。新しいライブ壁紙を約 1 週間テストしましたが、完全に稼働していましたが、市場にアップロードするとすぐに、この種の例外が発生し 続けjava.lang.OutOfMemoryError
ます。私はこの種のビットマップのライフサイクルを使用します:android.graphics.Bitmap.nativeCreate
android.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 次元である必要がありますか?