2015-01-21 4 views
1

내 응용 프로그램에는 레이아웃 배경 인 20 장 이상의 사진이 있습니다. 다른 이미지를 추가하면 응용 프로그램이 작동을 멈췄습니다.Android OutOfMemoryError

01-20 22:01:51.707: E/AndroidRuntime(15045): FATAL EXCEPTION: main 
01-20 22:01:51.707: E/AndroidRuntime(15045): Process: xxxxxx, PID: 15045 
01-20 22:01:51.707: E/AndroidRuntime(15045): java.lang.OutOfMemoryError 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.content.res.Resources.loadDrawable(Resources.java:3056) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.content.res.Resources.getDrawable(Resources.java:1613) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1016) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.policy.impl.PhoneWindow.setDefaultIcon(PhoneWindow.java:1543) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.initActionBar(Activity.java:1996) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.setContentView(Activity.java:2011) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at xxxxxx.onCreate(xxxxx.java:1338) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Activity.performCreate(Activity.java:5426) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.access$900(ActivityThread.java:161) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.os.Handler.dispatchMessage(Handler.java:102) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.os.Looper.loop(Looper.java:157) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at android.app.ActivityThread.main(ActivityThread.java:5356) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at java.lang.reflect.Method.invokeNative(Native Method) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at java.lang.reflect.Method.invoke(Method.java:515) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
01-20 22:01:51.707: E/AndroidRuntime(15045): at dalvik.system.NativeStart.main(Native Method) 

이미지는 동시에 onCreate() 방법으로로드됩니다.

main.xml에 :

<LinearLayout 
    android:id="@+id/linearLayout27" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/abc" 
    android:orientation="vertical" > 

에서 onCreate()

layout26 = (LinearLayout) findViewById(R.id.linearLayout27); 
layout26.setOnClickListener(this); 

I 각 이미지는 대략 400 X 800 픽셀의 크기를 갖는 것을 추가한다.

이 문제는 이미 여기에 있지만 나는 해결책을 찾지 못했습니다.

+0

을 시작하는 데있어 포스트 당신의 로그 캣은'OutOfMemoryError' – shkschneider

+0

** 매니페스트 ** ...'LinearLayout'을 보여주는! 확실합니까? –

+1

set largeHeap = "true" – ashutiwari4

답변

2

android 비트 맵으로 작업 할 때 매우 일반적인 문제입니다. 나는 것이 일반적으로 매니페스트 파일이

android:largeHeap=“true” 

를 추가,하지만 요즘의 나는 이미지를 처리하는 동안 매우 좋은 피카소 항아리을 사용하고있다. 기본적으로 캐시도 제공합니다. 여기 링크가 당신이 http://square.github.io/picasso/

+0

Picasa를 사용하여 이미지 레이아웃을 레이아웃에로드 할 수 있습니까? – pawel22

+0

당신이 묻고 자하는 것을 얻지 못했을 때 레이아웃이나 다른 것의 백그라운드에서 비동기 작업으로 이미지를로드 할 수 있는지 묻고 있습니까 –

+0

Picasso 라이브러리의 설명서에서 Picasso.with (context) .load (R.drawable.landing_screen) .into (imageView1); 하지만 이미지를 레이아웃 배경으로로드해야합니다. 그리고 그것은이 라이브러리에서만 imageView를 사용할 수 있습니다. – pawel22