から撮った写真からOutOfMemoryError
を作成しているところです。私のコードは、例外が発生するまで数回正常に動作するため、メモリ リークを探すのに数時間費やしました。Bitmap
Camera
奇妙なことは、PictureCallback
バイト配列のサイズを確認するためだけにコードをトレースしたことです。例外がスローされない場合は約 280k ですが、最終的には 1.2M を超えるバイト配列を受け取り、decodeByteArray がクラッシュします。
カスタムを使用していますCameraActivity
。初期化するコードはCamera
次のようになります
camera = Camera.open();
camera.setDisplayOrientation(cameraOrientation);
Camera.Parameters params = camera.getParameters();
Size size = getPreferredPictureSize();
params.setPictureSize(size.width, size.height);
params.setJpegQuality(JPEG_QUALITY);
params.setPictureFormat(ImageFormat.JPEG);
camera.stopPreview();
camera.setParameters(params);
camera.startPreview();
一時停止中はこのようCameraActivity
に解放しますCamera
if (camera != null) {
camera.stopPreview();
camera.release();
camera = null;
}
同じ初期化で、返される画像のサイズが大きく異なるのはなぜですか? ものを完全に解放する方法を見逃してもCamera
いいですか?手がかりをいただければ幸いです:)