我的Android应用程序在Android 5.0上占用50MB内存

时间:2015-03-26 01:37:23

标签: android universal-image-loader

我在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();

我不知道为什么会这样,请帮忙!

提前致谢。

2 个答案:

答案 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张图像会导致内存问题。

高分辨率图像会变得更糟,最好使用可以为您管理此任务的库,甚至是缓存并尝试降低分辨率。