【问题标题】:Android ViewPager OutOfMemory ExceptionAndroid ViewPager OutOfMemory 异常
【发布时间】:2016-01-06 10:37:12
【问题描述】:

我实现了一个 ViewPager,但我在 instantiateItem 方法中遇到了 OutOfMemory 异常:

@Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = QPhotoGallery.this;
        mImageViewForPager = new ImageView(context);
        mImageViewForPager.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

        mImageForView = mImages.get(position);

        File imgFile = new  File(mImageForView.getPath());
        if (imgFile.exists()) {
            mImageViewForPager.setImageURI(Uri.fromFile(imgFile));
            if (mImageForView.getOrientation() == ExifInterface.ORIENTATION_ROTATE_90)
                mImageViewForPager.setRotation(90);
            if (mImageForView.getOrientation() == ExifInterface.ORIENTATION_ROTATE_180)
                mImageViewForPager.setRotation(180);
            if (mImageForView.getOrientation() == ExifInterface.ORIENTATION_ROTATE_270)
                mImageViewForPager.setRotation(270);
        }

...
}

这条线:

mImageViewForPager.setImageURI(Uri.fromFile(imgFile));

导致异常。有人有想法吗?

【问题讨论】:

  • 图像尺寸问题,请添加适当尺寸的图像或使用高配置设备
  • 将图像存储到具有自定义尺寸的新路径并在代码中使用该图像,或使用 Picaso 加载图像。

标签: android android-viewpager out-of-memory android-imageview


【解决方案1】:

OutOfMemory 异常

当使用可用平台资源无法满足内存请求时引发。这样的请求可以由正在运行的应用程序或 VM 的内部函数发出。

您正在处理大型位图并在运行时加载所有位图 时间。您必须通过加载非常小心地处理大型位图 您不需要一次整个位图然后执行的大小 缩放。

问题来了

mImageViewForPager.setImageURI(Uri.fromFile(imgFile));

imgFile 太大 (Big Size) 。这就是为什么有问题。减小它的大小(Resolutions)。 您可以在清单中添加 android:largeHeap="true"。 希望这会有所帮助。

https://developer.android.com/intl/es/training/displaying-bitmaps/index.html

【讨论】:

  • 您可以在清单中添加android:largeHeap="true" 和reduce image size。
  • @davidOhara 继续前进。很高兴听到。
【解决方案2】:

在将图像加载到内存中时,请记住,您应该始终考虑将其缩小,查看 Android 官方教程 - Loading Large Bitmaps Efficiently。

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-04-05
    • 2015-07-28
    相关资源
    最近更新 更多