【问题标题】:android universal image loader out of memoryandroid通用图像加载器内存不足
【发布时间】:2016-07-19 07:42:26
【问题描述】:

我正在加载大约 50 张图片。在我的活动中,我有这个配置

    DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
            .cacheOnDisk(true).cacheInMemory(true)
            .imageScaleType(ImageScaleType.EXACTLY)
            .resetViewBeforeLoading(true)
            .displayer(new FadeInBitmapDisplayer(300))
            .build();

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext())
        .defaultDisplayImageOptions(defaultOptions)
        .memoryCache(new WeakMemoryCache())
        .diskCacheSize(100 * 1024 * 1024)
        .build();

    ImageLoader.getInstance().init(config);

在活页夹数据中

ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.displayImage(uri, holder.iv_img);

有些图像已加载,但有些未加载,我收到 OutOfMemory 错误。

【问题讨论】:

    标签: android universal-image-loader


    【解决方案1】:

    查看Useful Info的提示

    如果您在使用 Universal Image 的应用中经常遇到 OutOfMemoryError 然后加载器:

    1. 禁用内存中的缓存。如果 OOM 仍然发生,那么您的应用似乎存在内存泄漏。使用 MemoryAnalyzer 检测它。否则 尝试以下步骤(全部或几个):
    2. 减少配置中的线程池大小 (.threadPoolSize(...))。建议使用 1 - 5。
    3. 在显示选项中使用 .bitmapConfig(Bitmap.Config.RGB_565)。 RGB_565 中的位图消耗的内存是 ARGB_8888 中的 2 倍。
    4. 使用 .imageScaleType(ImageScaleType.EXACTLY)(你已经使用了这个提示)
    5. 在配置中使用 .diskCacheExtraOptions(480, 320, null)

    希望这会有所帮助!

    【讨论】:

    • threadPoolSize 确定同时运行的线程数。如果设置较大的池大小,UI 的速度会显着降低,例如列表滚动可能会变慢。在stackoverflow.com/questions/16603245/…@Nostra 推荐使用 3.
    【解决方案2】:

    1.我建议您查看 Facebook 的图像管理库,即Fresco,与其他图像加载库相比,它非常棒且成熟。

    2.Fresco 使用 3 层架构(BITMAP_MEMORY_CACHEENCODED_MEMORY_CACHEDISK_CACHE)处理所有图像缓存。 它还减少了 OOM(内存不足)问题。当视图中的图像离开屏幕时,它会自动回收位图,从而释放内存。

    3.Fresco 有SimpleDraweeView 作为自定义图像视图,它支持圆角和圆形链接,并支持动画(.gif.webp)和普通图像(.jpg.png)。

    【讨论】:

    • Fresco 是否可以创建视频的缩略图(.mp4、.3gp 等)?
    • @hasnain_ahmad 是 youtube 视频吗?
    • 我不认为 Fresco 会这样做,它是一个图像加载库,不会从视频中提取图像/帧。
    猜你喜欢
    • 2016-08-27
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2014-08-31
    • 1970-01-01
    相关资源
    最近更新 更多