我在使用通用图像加载器库时遇到问题。不幸的是,库导致我的应用程序使用大量内存。
我有一个 ScrollView(我使用 ScrollView 而不是 ListView 的原因有很多,其中大多数与自定义插入和项目选择动画有关)持有大约20 个自定义 Views。这些自定义视图中的每一个都由一些 TextView 和一个 ImageView 组成。
现在是这样的:
ImageViews 中显示的图像是从 Internet 下载的,每个图像都有大约100-150kb(尺寸 640 x 320)。如果我使用 UniversalImageLoader 下载图像,我的应用程序会因 OutOfMemoryException 而崩溃,因为它使用了大约80Mb的内存。
如果我不下载图像,而只是在每个自定义视图中放入一个大小为1200kb(尺寸 1920 x 1080)的硬编码图像,我的应用程序只消耗大约40Mb的内存。
下载十倍小的图像时使用 UniversalImageLoader 做错了什么导致我的应用程序使用两倍的内存?
我禁用了所有缓存机制,但问题仍然存在。
这是我的 UniversalImageLoader 设置:
ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(c)
.build();
ImageLoader.getInstance().init(config);
DisplayImageOptions options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.loading)
.showImageForEmptyUri(R.drawable.loading)
.showImageOnFail(R.drawable.loading)
.cacheInMemory(false)
.cacheOnDisc(false)
.imageScaleType(ImageScaleType.IN_SAMPLE_INT) // default
.build();
在代码中,我这样称呼它:
ImageLoader im = ImageLoader.getInstance();
im.displayImage("myurl", myimageview, options);
我究竟做错了什么?为什么 UniversalImageLoader 会占用这么多内存?