壁画高内存使用率

时间:2018-09-17 21:15:58

标签: android memory fresco android-profiler

我们已经按照此处的文档http://frescolib.org/docs/configure-image-pipeline.html中提到的步骤设置了壁画。

 ImagePipelineConfig config = ImagePipelineConfig
            .newBuilder(this)
            .setBitmapsConfig(Bitmap.Config.RGB_565)
            .setRequestListeners(requestListeners)
            .setDownsampleEnabled(true)
            .build();
    Fresco.initialize(this, config);

根据需要在应用程序onCreate中对其进行一次设置。来自网络的图像很少,大小无法匹配,因此我们必须将setDownsampleEnabled与resize选项一起使用。

以下是用于加载图像的代码-

ImageRequest request = ImageRequestBuilder.newBuilderWithSource(Uri.parse(asseturl))
            .setProgressiveRenderingEnabled(true)
            .setResizeOptions( new ResizeOptions(width,height))
            .build();
    DraweeController controller = Fresco.newDraweeControllerBuilder()
            .setImageRequest(request)
            .setOldController(sdv.getController())
            .setTapToRetryEnabled(true)
            .build();
    sdv.setController(controller);

在Recyclerview的onViewDetachedFromWindow和onViewRecycled方法中将控制器设置为null。

在运行应用程序的几分钟内,使用的内存非常高。

探查器内存图看起来不太漂亮。

Android Profiler Memory graph

附加了堆转储以供参考。

Heap Dump

还检查了日志中的壁画。日志中提到同一图像多次下采样。我已经验证了对图片的请求不过一次。

附加了Logcat快照

Fresco Log Snapshot for a Image

0 个答案:

没有答案