Fresco: 占位符导致内存泄漏

创建于 2016-01-13  ·  4评论  ·  资料来源: facebook/fresco

我在 xml 中的代码是

        <com.facebook.drawee.view.SimpleDraweeView
            android:layout_width="0dp"
            fresco:placeholderImage="@drawable/thisone_placeholder"
            fresco:actualImageScaleType="fitCenter"
            android:layout_height="wrap_content"
            fresco:viewAspectRatio="0.5625"
            android:layout_weight="1" />

thisone_placeholder_left 是 jpg,当我使用它时,内存增加得很快。
在我移动它之后,它就变得正常了。

needs-details

最有用的评论

不管小与否,泄漏就是泄漏。

所有4条评论

Fresco 不会对占位符图像做任何花哨的事情 - 无论您指定什么,它将通过Resources.getDrawable (https://github.com/facebook/fresco/blob/94ce1dee0733300fe2c029382e0c454169db81b8/drawee/src/main/java/ com/facebook/drawee/view/GenericDraweeView.java#L246)。

你能检查一下内存增长是因为 thisone_placeholder 图像太大还是因为创建了多个位图实例(每个可绘制一个)? 您可以在堆转储中检查。

我确认这一点。

我有一个网格视图,其中包含几张使用大 JPEG 作为占位符(用于测试)的图像,并且该应用程序因内存不足而崩溃。 我删除了占位符并按照旧方法检查是否有图像,否则将占位符加载为实际图像,泄漏停止了。

下面是Android Studio内存分配分析: 2016.02.10_21.04.zip

占位符是小而快速加载的图像。 如果您需要在那里使用大图像,则应使用低分辨率请求

不管小与否,泄漏就是泄漏。

此页面是否有帮助?
0 / 5 - 0 等级