Java 如何使用jpg图像修复RecylerView中的OutOfMemoryError
我在android应用程序中有一个RecyclerView。我正在做某种文件浏览器 当我将自己的设备插入计算机时,当我到达DCIM文件夹中的Camera文件夹时,它的内存就会耗尽 这是因为那里有很多图片,我试图将它们显示为ImageView,而不是通常的可绘制文件图标 加载图像时,应用程序空间不足,因此会崩溃 我使用RecyclerView实现该应用程序,认为它将回收视图,而不会耗尽内存或延迟。但它似乎不起作用 我试着做一些变通,只为RecyclerView的可见部分加载图像,但这需要很多扭曲,最终没有成功 是否有办法加载大量图像,并确保它们不会占用RAM中太多空间。我使用的是一部旧手机,我希望我的应用程序能在上面运行。这是一个银河Ace II。使用glideJava 如何使用jpg图像修复RecylerView中的OutOfMemoryError,java,android,android-recyclerview,jpeg,Java,Android,Android Recyclerview,Jpeg,我在android应用程序中有一个RecyclerView。我正在做某种文件浏览器 当我将自己的设备插入计算机时,当我到达DCIM文件夹中的Camera文件夹时,它的内存就会耗尽 这是因为那里有很多图片,我试图将它们显示为ImageView,而不是通常的可绘制文件图标 加载图像时,应用程序空间不足,因此会崩溃 我使用RecyclerView实现该应用程序,认为它将回收视图,而不会耗尽内存或延迟。但它似乎不起作用 我试着做一些变通,只为RecyclerView的可见部分加载图像,但这需要很多扭曲,
在您的依赖项中添加
com.github.bumptech.glide:glide:4.10.0
谢谢您的回答。
我最后做了以下几件事:
Bitmap bitmap = BitmapFactory.decodeFile(filePath);
bitmap = Bitmap.createScaledBitmap(bitmap, 50, 50, false);
imageView.setImageBitmap(bitmap);
即使是50x50像素,它仍然非常滞后。我可以试试GLIDE library。为什么强烈建议使用GLIDE或毕加索在应用程序中处理图像 1-实现滑动(我更喜欢) 2-实现毕加索(也是一个强大的库) 他们专业地处理图像。他们有工具来避免图像引起的OOM。您应该按照教程来实现和使用它们 但OOM不仅仅是因为图像。必须遵守整个应用程序 这篇文章可以帮上忙 实施后,使用滑动调整大小
Glide.with(mCtxt).load( image uri or url or drawable )
.error( image when error occurs )
.override(320,180) // overrided width and height
.centerCrop()
.into( imageview );
- 无论您在使用什么,都应该根据移动设备调整图像