1

初めて、問題はなく、正常に動作します。しかし、もう一度「写真を撮る」を押すと、アプリがクラッシュします。これが私のコードです:

ImageView myImage = (ImageView)findViewById(R.id.ivReturnPic);
Bitmap = bmap = BitmapFactory.decodeFile(file.getAbsolutePath());
myImage.setImageDrawable(bmap);

logcat 情報は次のとおりです。

08-09 10:06:23.835: E/AndroidRuntime(28492): FATAL EXCEPTION: main
08-09 10:06:23.835: E/AndroidRuntime(28492): java.lang.OutOfMemoryError
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:650)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:389)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:449)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at com.example.customcalenderandroid.Camera.onActivityResult(Camera.java:232)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.Activity.dispatchActivityResult(Activity.java:5390)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3178)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3225)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.ActivityThread.access$1100(ActivityThread.java:140)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1275)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.os.Handler.dispatchMessage(Handler.java:99)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.os.Looper.loop(Looper.java:137)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at android.app.ActivityThread.main(ActivityThread.java:4898)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at java.lang.reflect.Method.invokeNative(Native Method)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at java.lang.reflect.Method.invoke(Method.java:511)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775)
08-09 10:06:23.835: E/AndroidRuntime(28492):    at dalvik.system.NativeStart.main(Native Method)
08-09 10:06:23.840: E/android.os.Debug(2401): !@Dumpstate > dumpstate -k -t -z -d -o /data/log/dumpstate_app_error
4

1 に答える 1

1

取得している例外は OutOfMemoryException です。これは、名前が示すように、アプリのメモリが不足していることを意味します。Android での画像の処理は、特にフル サイズの写真を撮影する場合、少し難しい場合があります。ハイエンドのスマートフォンであっても、複数のフルサイズのビットマップを同時にロードできるスマートフォンは多くありません。bitmap.recycle() を使用して不要なビットマップをできるだけ早くリサイクルすると、多くの問題を解決できます。ここでは、メモリにやさしい方法でビットマップをロードする方法について詳しく説明しています: http://developer.android.com/training/camera/photobasics.html#TaskScalePhoto

于 2013-08-09T16:26:04.117 に答える