2014-03-30 3 views
0

비슷한 문제가있는 여기에 몇 가지 다른 스레드를 읽었지만 문제가 해결되지 않았습니다.285692020 바이트 할당/비트 맵 팩토리 문제로 인해 메모리가 부족합니까?

그래서 내 앱은 사용자의 회 전자 선택에 따라 이미지를 변경합니다. 따라서 sharedPreferences 파일에서 선택 항목을로드합니다.

문제는이 코드가 몇 달 전에 만든 앱에서 작동한다는 것입니다. 난 내 애플 리케이션을 처음부터 다시 작성하지만, 필요한 경우 기존 애플 리케이션의 코드를 사용하고있다. 코드는 동일하며 기존 앱에서 작동하지만 새 앱에서는 작동하지 않습니다. 여기 내 오류 로그입니다 : 여기

DivXPlugin::onOpenDecryptSession() Not a Divx File. 
PrGenericPlugin::onOpenDecryptSession() onCanHandle error 
Error: ACDB AudProc vol returned = -8 
E/MP-Decision(1802): num online cores: 1 reqd : 2 available : 4 rq_depth:7.000000 hotplug_avg_load_dw: 46 
E/MP-Decision(1802): UP cpu:1 core_idx:1 Nw:1.900000 Tw:140 total_time_up:147.000000 
E/AudioResampler(209): Unsupported sample format, 1 bits, 2 channels 
E/dalvikvm-heap(26650): Out of memory on a 285692020-byte allocation. 
E/AndroidRuntime(26650): FATAL EXCEPTION: main 
E/AndroidRuntime(26650): java.lang.OutOfMemoryError 
E/AndroidRuntime(26650): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
E/AndroidRuntime(26650): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
E/AndroidRuntime(26650): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
E/AndroidRuntime(26650): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:835) 
E/AndroidRuntime(26650): at android.content.res.Resources.loadDrawable(Resources.java:2988) 
E/AndroidRuntime(26650): at android.content.res.Resources.getDrawable(Resources.java:1558) 
E/AndroidRuntime(26650): at com.Chris.App.Info.onCreate(Info.java:34) 
E/AndroidRuntime(26650): at android.app.Activity.performCreate(Activity.java:5372) 
E/AndroidRuntime(26650): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
E/AndroidRuntime(26650): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
E/AndroidRuntime(26650): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
E/AndroidRuntime(26650): at android.app.ActivityThread.access$700(ActivityThread.java:159) 
E/AndroidRuntime(26650): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
E/AndroidRuntime(26650): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(26650): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(27961): FATAL EXCEPTION: main 
E/AndroidRuntime(27961): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.Chris.App/com.Chris.App.Info}: java.lang.NullPointerException 
E/AndroidRuntime(27961): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2219) 
E/AndroidRuntime(27961): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
E/AndroidRuntime(27961): at android.app.ActivityThread.access$700(ActivityThread.java:159) 
E/AndroidRuntime(27961): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
E/AndroidRuntime(27961): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(27961): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(27961): at android.app.ActivityThread.main(ActivityThread.java:5419) 
E/AndroidRuntime(27961): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(27961): at java.lang.reflect.Method.invoke(Method.java:525) 
E/AndroidRuntime(27961): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
E/AndroidRuntime(27961): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
E/AndroidRuntime(27961): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime(27961): Caused by: java.lang.NullPointerException 
E/AndroidRuntime(27961): at android.content.ContextWrapper.getSharedPreferences(ContextWrapper.java:174) 
E/AndroidRuntime(27961): at com.Chris.App.Info.<init>(Info.java:17) 
E/AndroidRuntime(27961): at java.lang.Class.newInstanceImpl(Native Method) 
E/AndroidRuntime(27961): at java.lang.Class.newInstance(Class.java:1130) 
E/AndroidRuntime(27961): at android.app.Instrumentation.newActivity(Instrumentation.java:1078) 
E/AndroidRuntime(27961): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2210) 
E/AndroidRuntime(27961): ... 11 more 
E/AndroidRuntime(26650): at android.app.ActivityThread.main(ActivityThread.java:5419) 
E/AndroidRuntime(26650): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(26650): at java.lang.reflect.Method.invoke(Method.java:525) 
E/AndroidRuntime(26650): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187) 
E/AndroidRuntime(26650): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 
E/AndroidRuntime(26650): at dalvik.system.NativeStart.main(Native Method) 
E/android.os.Debug(674): [email protected] > sdumpstate -k -t -z -d -o /data/log/dumpstate_app_error 
E/EnterpriseContainerManager(674): ContainerPolicy Service is not yet ready!!! 
E/ViewRootImpl(674): sendUserActionEvent() mView == null 

다시, 인앱에서 작동하지만 코드의 SNIPPIT하지 응용 프로그램 B는?

SharedPreferences sharedPreferences = getSharedPreferences("MY_SHARED_PREF", MODE_PRIVATE); 

final ImageView im = (ImageView)findViewById(R.id.selection1); 
String s = sharedPreferences.getString("MEM1", ""); 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.info); 


    if(s.equals("Nothing Selected")) { 
     im.setImageDrawable(getResources().getDrawable(R.drawable.clearimage)); 
     im.setVisibility(View.GONE); 
    } else if(s.equals("Selection 1")) { 
     im.setImageDrawable(getResources().getDrawable(R.drawable.selection1image)); 
     im.getLayoutParams().height = 600; 
     im.getLayoutParams().width = 600; 
    } 
    }  

그래서 나는의 부족을 받고있는 것으로 보인다 메모리 오류 및 컨텍스트 래퍼/문제가 내 공유 환경 설정 ??? 실망스러운 코드가 정확히 작동하는 다른 앱과 동일 할 때

+0

285MB를 할당하려고하므로 OutOfMemoryError가 발생하지 않습니다. –

+0

285MB 이미지를로드하려고합니다. 이는 앱에 허용 된 것보다 약 10 배 더 많은 메모리입니다. – kgmaize

+0

Ick !! 어리석은 질문 후속 조치. Eclipse에서 새로운 Android 애플리케이션을 만들 때 나는 전혀 다른 것을하지 않았다. 어떻게 낮게 설정합니까? – NewGuyChris

답변

0

너비/높이를 알 수있는 것 같습니다. 이 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html을 읽어보십시오.

또한이 비트 맵의 ​​출처는 어디입니까? 그것이 어디서 오는가, 그 거대한. 웹을 통해 다운로드하고 싶지는 않지만 (285MB는 압축되지 않은 크기 임) 사용자 데이터 플랜을 삭제하십시오.

사람들이 앱을 다운로드하지 않기 때문에 자산으로 출하하기를 원하지 않을 수도 있습니다.

+0

링크 주셔서 감사합니다, 그것을 읽을 수 있는지 확인합니다. 모든 내 그림은 있습니다. 낮은 .png 파일. 크기는 500kb를 넘지 않아야합니다. – NewGuyChris

+0

비트 맵의 ​​크기는 무엇입니까? RGB_8888에서는 픽셀 당 w * h * 4 바이트가됩니다. – dnkoutso

+0

거대한 크기의 이미지로 복사했습니다. >. <나를 봐 주셔서 감사합니다. 그들은 3,000x3xxx와 같았습니다. 작은 500x4xx를 넣었습니다. 이제는 그냥 java.lang.RuntimeException : 활동을 인스턴스화 할 수 없습니다. ComponentInfo {com.Chris.App /com.Chris.App.Info} : java.lang.NullPointerException 오류 수정 할 수 없습니다. – NewGuyChris

관련 문제