【问题标题】:Show Slideshow - Android OutOfMemoryError显示幻灯片 - Android OutOfMemoryError
【发布时间】:2017-01-21 18:30:29
【问题描述】:

我正在尝试显示超过 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: 致命异常: main 进程:com.applications.codegeek.slideshow,PID:10126 java.lang.OutOfMemoryError:无法分配 52920012 字节分配,其中 4194304 可用字节和 31MB 直到 OOM 在 dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在 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) 在 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) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

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

【问题讨论】:

  • 为什么不使用像glide、picasso等图像加载器库
  • 我在Glide For Github 上发现显示图像很有用。不过我可能理解错了。关于picasso 我看到了一些关于它的视觉示例,我从中得到的是它对拼贴画很有用。我可能理解错了,如果是这样,请告诉我它实际上做了什么。谢谢!

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


【解决方案1】:

为了减少内存,你可以使用这个插件 Android Drawable Importer Plugin

还有……

android:largeHeap="true" 在您的清单中 它会增加你的堆大小并避免 OutOfMemory

祝你好运!

【讨论】:

  • 它仍然无法正常工作。我的清单中已经有了 largeHeap,但是我将所有图像都转换为 ldpi,但它仍然显示此错误。请帮忙
  • 尝试放入你的 gradle dexOptions android { compileSdkVersion 25 buildToolsVersion '23.0.3' dexOptions { preDexLibraries = false javaMaxHeapSize "4g" }
  • 不,我仍然遇到同样的错误。不过感谢您的尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-24
  • 2010-11-06
相关资源
最近更新 更多