我在Android 4.1.1上开发我的Android应用程序,我使用listview显示100张图片,我使用Universal Image Loader
显示所有图片。
我的应用程序在Android 4.1.1上使用大约20MB,当加载更多图像时,它可以接受30MB。不幸的是,当我在Android 5.0上测试我的应用程序时,它使用大约40MB内存,当它加载更多图像时,它会达到55MB并使我的应用程序变得非常慢。
以下是我定义Universal Image Loader选项的方法:
private DisplayImageOptions options = new DisplayImageOptions.Builder()
.delayBeforeLoading(100)
.resetViewBeforeLoading(true)
.cacheInMemory(true)
.cacheOnDisk(true)
.postProcessor(null)
.showImageOnFail(R.drawable.empty_loading)
.showImageForEmptyUri(R.drawable.empty_loading)
.considerExifParams(true)
.imageScaleType(ImageScaleType.EXACTLY)
.bitmapConfig(Bitmap.Config.RGB_565) //makes image smaller
// .displayer(new FadeInBitmapDisplayer(300, true, true, true)) //comment out this line, then flickering is gone
.build();
我不知道为什么会这样,请帮忙!
提前致谢。
答案 0 :(得分:0)
好的,所以这不是这个问题的答案。我根据你的评论编写代码。如何获取应用程序缓存大小:
File cacheDirectory = mContext.getCacheDir();
long size = 0;
File[] files = cacheDirectory.listFiles();
for (File f:files) {
size = size+f.length();
}
看看它在大豆和lolipop中的大小是不同的
答案 1 :(得分:0)
问题很明显,如果没有正确完成,加载100张图像会导致内存问题。
高分辨率图像会变得更糟,最好使用可以为您管理此任务的库,甚至是缓存并尝试降低分辨率。