마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

OutOfMemory 에러 입니다.

0 추천
카메라 크롭 후 저장된 크롭이미지를 다음 엑티비티의 이미지뷰에 보이게하니

oom에러가 납니다... recycle도 써보고 largeheap도 써보고 이미지크기 조절을 해도 똑같이 에러가나고

두번째 카메라로 찍고 다음 엑티비티의 이미지뷰에 보이게하면 에러가안납니다...

꼭 처음에만 납니다... 그리고나서 앱종료 후 다시 앱을키고 카메라찍는 엑티비티를 키면 에러가납니다.

에러 로그 올리겟습니다. 도대체 메모리 부족은 어떻게 해야하나요. oom.......

 

첫번재 카메라로 찍고 다음 엑티비티의 이미지뷰에 보이게하면 나는 에러입니다.

                                                                                 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.xxxxxxx/com.example.xxxxxxx.CameraLineActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class <unknown>
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2434)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:157)
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5525)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                                                                                  Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class <unknown>
                                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
                                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
                                                                                     at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
                                                                                     at com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:403)
                                                                                     at android.app.Activity.setContentView(Activity.java:2171)
                                                                                     at com.example.xxxxxxx.CameraLineActivity.onCreate(CameraLineActivity.java:64)
                                                                                     at android.app.Activity.performCreate(Activity.java:6272)
                                                                                     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
                                                                                     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2387)
                                                                                     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
                                                                                     at android.app.ActivityThread.access$900(ActivityThread.java:157)
                                                                                     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1356)
                                                                                     at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                                     at android.app.ActivityThread.main(ActivityThread.java:5525)
                                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                                                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

앱종료 후 다시 앱을키고 카메라찍는 버튼을 눌렀을때 에러입니다.

 

                                                                                java.lang.OutOfMemoryError: Failed to allocate a 62259212 byte allocation with 18870944 free bytes and 17MB until OOM
                                                                                     at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
                                                                                     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
                                                                                     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:609)
                                                                                     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
                                                                                     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1080)
                                                                                     at android.content.res.Resources.loadDrawableForCookie(Resources.java:2738)
                                                                                     at android.content.res.Resources.loadDrawableForParallelLoading(Resources.java:2578)
                                                                                     at android.content.res.Resources.access$400(Resources.java:113)
                                                                                     at android.content.res.Resources$ParallelLoadingThread.run(Resources.java:3064)
zangon (810 포인트) 님이 2016년 9월 28일 질문

2개의 답변

0 추천

Error message의 이 부분이요.

Binary XML file line #27: Error inflating class <unknown>

해당 layout file에 오류가 있을 지도 모르니 27번째 라인 근처를 잘 확인해 보시기 바랍니다. 

spark (226,380 포인트) 님이 2016년 9월 29일 답변
확인해봣는데 레이아웃쪽 에러는 제가보기에는 아닌것 같습니다...ㅠㅠ
0 추천

에러 로그 보니 디코딩시에 62259212 byte 를 할당하려고 하네요.

거의 59MB인데....이정도면 굉장히 큰 이미지를 디코딩 시도하는것 같습니다.

 

소스가 없어 알 수 없으나 에러로그로 짐작해보면..

XML에서 할당된 리소스로 보여집니다.

CameraLineActivity.java 파일의 64라인에서 설정하는 xml 파일의 27번째 라인에서 

사용하는 리소스가 어떤것인지 확인을 해보시는게 좋을 것 같습니다.

(짐작으로는 이미지를 설정하는것 같은데...해당 이미지가 큰것 같습니다.)

 

바램 (19,650 포인트) 님이 2016년 9월 29일 답변
답변 감사드립니다~ 메모리 관리하는게 제일 복잡한 것 같습니다... 이 부분 공부해야겟네요...
...