Android ViewPager OutOfMemory异常

Android ViewPager OutOfMemory异常,android,android-viewpager,out-of-memory,android-imageview,Android,Android Viewpager,Out Of Memory,Android Imageview,我实现了一个ViewPager,并且在InstanceItem方法中得到一个OutOfMemory异常: @Override public Object instantiateItem(ViewGroup container, int position) { Context context = QPhotoGallery.this; mImageViewForPager = new ImageView(context); mImageVie

我实现了一个ViewPager,并且在InstanceItem方法中得到一个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));
正在导致异常。有人有主意吗?

OutOfMemory例外 当使用可用平台资源无法满足内存请求时引发。这样的请求可以由运行中的应用程序或VM的内部功能发出

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

问题就在这里

mImageViewForPager.setImageURI(Uri.fromFile(imgFile));
imgFile太大(大尺寸)。这就是问题的原因。减小其大小(分辨率)。 您可以在清单中添加android:largeHeap=“true”。 希望这有帮助


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

您可以添加
Android:largeHeap=“true”
在您的清单中&
减小图像大小
@davidOhara前进。很高兴听到。图像尺寸问题请添加正确的尺寸图像或使用高配置设备将图像存储到具有自定义尺寸的新路径,并在代码中使用该图像,或使用Picaso加载图像。