显示幻灯片 - Android OutOfMemoryError

时间:2017-01-21 18:30:29

标签: java android out-of-memory viewflipper android-viewflipper

我正在尝试显示超过50张图片的幻灯片。每当我运行它时,我得到一个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();
}

我的logcat显示:

  

E / AndroidRuntime:致命异常:主要                                                                                          处理:com.applications.codegeek.slideshow,PID:10126                                                                                          java.lang.OutOfMemoryError:无法分配52920012字节分配4194304空闲字节和31MB直到OOM                                                                                              at dalvik.system.VMRuntime.newNonMovableArray(Native Method)                                                                                              在android.graphics.BitmapFactory.nativeDecodeAsset(本机方法)                                                                                              在android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)                                                                                              在android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)                                                                                              在android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155)                                                                                              在android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720)                                                                                              在android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)                                                                                              在android.content.res.Resources.getDrawable(Resources.java:771)                                                                                              在android.content.Context.getDrawable(Context.java:525)                                                                                              在android.widget.ImageView.resolveUri(ImageView.java:856)                                                                                              在android.widget.ImageView.setImageResource(ImageView.java:448)                                                                                              在com.applications.codegeek.slideshow.SlideshowActivity $ override.onCreate(SlideshowActivity.java:29)                                                                                              at com.applications.codegeek.slideshow.SlideshowActivity $ override.access $ dispatch(SlideshowActivity.java)                                                                                              在com.applications.codegeek.slideshow.SlideshowActivity.onCreate(SlideshowActivity.java:0)                                                                                              在android.app.Activity.performCreate(Activity.java:6679)                                                                                              在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)                                                                                              在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)                                                                                              在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)                                                                                              在android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4519)                                                                                              在android.app.ActivityThread.-wrap19(ActivityThread.java)                                                                                              在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1483)                                                                                              在android.os.Handler.dispatchMessage(Handler.java:102)                                                                                              在android.os.Looper.loop(Looper.java:154)                                                                                              在android.app.ActivityThread.main(ActivityThread.java:6119)                                                                                              at java.lang.reflect.Method.invoke(Native Method)                                                                                              在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886)                                                                                              在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:1)

对于减少内存,您可以使用此插件 Android Drawable Importer Plugin

也是..

你的Manifest中的

android:largeHeap =“true” 它会增加堆大小并避免使用OutOfMemory

祝你好运!