2

50 장 이상의 이미지 슬라이드 쇼를 표시하려고합니다. 내가 그것을 실행할 때마다, 나는 OutOfMemoryError를 얻는다. 내 코드는 다음과 같습니다슬라이드 쇼보기 - Android OutOfMemoryError

public class SlideshowActivity extends Activity { 

private ViewFlipper myViewFlipper; 
int[] image = { R.drawable.one_facebook, R.drawable.two_facebook, 
     R.drawable.three_facebook, R.drawable.four_facebook, R.drawable.five_facebook, 
     R.drawable.six_facebook, R.drawable.seven_facebook, R.drawable.eight_facebook, 
     R.drawable.nine_facebook, R.drawable.ten_facebook, R.drawable.eleven_facebook, 
     R.drawable.onetwo_facebook, etc. }; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_slideshow); 
    myViewFlipper = (ViewFlipper) findViewById(R.id.myflipper); 

    for (int i = 0; i < image.length; i++) { 
     ImageView imageView = new ImageView(SlideshowActivity.this); 
     imageView.setImageResource(image[i]); 
     myViewFlipper.addView(imageView); 

    } 
    myViewFlipper.setAutoStart(true); 
    myViewFlipper.setFlipInterval(1000); 
    myViewFlipper.startFlipping(); 
} 

내 로그 캣 쇼 :

E/AndroidRuntime: FATAL EXCEPTION: main Process: com.applications.codegeek.slideshow, PID: 10126 java.lang.OutOfMemoryError: Failed to allocate a 52920012 byte allocation with 4194304 free bytes and 31MB until OOM at dalvik.system.VMRuntime.newNonMovableArray(Native Method) at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) at android.content.res.Resources.getDrawable(Resources.java:771) at android.content.Context.getDrawable(Context.java:525) at android.widget.ImageView.resolveUri(ImageView.java:856) at android.widget.ImageView.setImageResource(ImageView.java:448) at com.applications.codegeek.slideshow.SlideshowActivity$override.onCreate(SlideshowActivity.java:29) at com.applications.codegeek.slideshow.SlideshowActivity$override.access$dispatch(SlideshowActivity.java) at com.applications.codegeek.slideshow.SlideshowActivity.onCreate(SlideshowActivity.java:0) at android.app.Activity.performCreate(Activity.java:6679) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4519) at android.app.ActivityThread.-wrap19(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1483) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

어떤 도움을 주시면 감사하겠습니다! 감사!

+1

glide, picasso 등의 이미지 로더 라이브러리를 사용하지 않는 이유는 무엇입니까 –

+0

[Glide For Github] (https://github.com/bumptech/glide)에서 찾은 것은 이미지를 표시하는 것이 유용하다는 것입니다. 나는 그것을 잘못 이해했을 수도 있습니다. [picasso] (http://square.github.io/picasso/)에 관해서 나는 그것에 관한 몇 가지 시각적 인 예를 보았다. 그리고 내가 그것을 얻은 것은 그것이 콜라주에 유용하다는 것이다. 나는 그것이 틀린 것을 이해했을지도 모른다. 그리고 그렇다면, 그것이 실제로하는 것을 나에게 말해주세요. 고맙습니다! –

답변

0

를 들어 감소 기억이 플러그인을 사용할 수 있습니다 Android Drawable Importer Plugin

그리고 너무 ..

안드로이드 :에 largeHeap = "true"를 매니페스트 그것은에서 OutOfMemory

당신의 힙 크기를 증가 방지 할 수

행운을 빈다!

+0

아직도 작동하지 않습니다. 이미 내 매니페스트에 largeHeap이 있지만 모든 이미지를 ldpi로 변환했지만 여전히이 오류를 보여줍니다. –

+0

이 Gradle을 dexOptions 안드로이드 { compileSdkVersion 25 buildToolsVersion에 넣어 함께 시도 도와주세요 '23 .0.3 ' dexOptions { preDexLibraries = 거짓 javaMaxHeapSize "4g" } –

+0

아니, 난 여전히 같은 오류가 발생합니다. 시도해 줘서 고마워. –