안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.
궁금한 점이 생겨서 이렇게 글 올려봅니다.
앱을 제작하고 있습니다. 유료 버전과 무료 버전으로 구분되며 차이는 광고의 유무입니다.
광고가 없는 유료 버전의 경우 문제가 없습니다만.
광고가 있는 무료 버전의 경우 OutOfMemory 오류가 발생하고 있습니다.
광고가 표시되는 액티비티로 진입시 발생하고 있구요. 매번 그러는건 아니지만 어느 정도의 간격으로 발생하고 있습니다.
각 단말기의 성능상의 차이가 있을 수 있겠지만.. 이미지 리소스를 많이 사용하고 있고 액티비티내 뷰들도 많습니다만..
광고가 없는 유료 버전에서는 해당 오류가 없이 정상 작동하고 있다는 것이 좀 의문입니다.
광고가 그렇게 메모리를 많이 할당하게 되는건가요?
참고로 테스트 단말기는 갤럭시 A(2.3), 갤럭시 S2(4.0), 갤럭시 Tab 10.1(3.2), 갤럭시 Note(4.0), 갤럭시 S3(4.0), 옵티머스 LTE2(4.0), 베가 레이서(2.3), 베가 레이서(4.0) 이고.
문제가 되는 테스트 단말기는 갤럭시A(2.3), 베가 레이서(2.3) 입니다.
베가 레이서의 경우는 2.3(진저 브레드)일 경우 문제가 되었는데 4.0(아이스크림 샌드위치)일 경우는 문제가 없습니다.
조언 좀 부탁드립니다. 감사합니다.
---------- error log ----------------------------------------------------------------------------------------------------------------------------------------------
E/AndroidRuntime(32096): FATAL EXCEPTION: main
E/AndroidRuntime(32096): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
E/AndroidRuntime(32096): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
E/AndroidRuntime(32096): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
E/AndroidRuntime(32096): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
E/AndroidRuntime(32096): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
E/AndroidRuntime(32096): at android.content.res.Resources.loadDrawable(Resources.java:1709)
E/AndroidRuntime(32096): at android.content.res.Resources.getDrawable(Resources.java:581)
E/AndroidRuntime(32096): at android.graphics.drawable.AnimationDrawable.inflate(AnimationDrawable.java:267)
E/AndroidRuntime(32096): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
E/AndroidRuntime(32096): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
E/AndroidRuntime(32096): at android.content.res.Resources.loadDrawable(Resources.java:1694)
E/AndroidRuntime(32096): at android.content.res.Resources.getDrawable(Resources.java:581)
E/AndroidRuntime(32096): at android.view.View.setBackgroundResource(View.java:7586)
E/AndroidRuntime(32096): at bigshot.game.beads_ranger_free.activity.MainActivity$23.run(MainActivity.java:2757)
E/AndroidRuntime(32096): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(32096): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(32096): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(32096): at android.app.ActivityThread.main(ActivityThread.java:3695)
E/AndroidRuntime(32096): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(32096): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(32096): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime(32096): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(32096): at dalvik.system.NativeStart.main(Native Method)




E/AndroidRuntime(32096): at bigshot.game.beads_ranger_free.activity.MainActivity$23.run(MainActivity.java:2757)
여기서 에러 났네요.
광고를 쓰면 메모리를 더 먹을 수도 있겠지만, 저 곳부터 확인해 보셔야 할듯하네요.