1

http://frescolib.org/docs/configure-image-pipeline.htmlのドキュメントに記載されている手順を使用して、Fresco をセットアップしました。

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

これは、必要に応じてアプリケーション onCreate で一度設定されます。ネットワークからの画像はほとんどなく、サイズが一致しないため、サイズ変更オプションを指定して setDownsampleEnabled を使用する必要があります。

以下は、画像をロードするために使用されるコードです -

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 プロファイラのメモリ グラフ

参考までにヒープダンプを添付します。

ヒープダンプ

Fresco のログも確認しました。ログには、同じ画像のダウンサンプリングが複数回記載されています。ただし、画像のリクエストが一度だけ行われることを確認しました。

添付された Logcat スナップショット

イメージの Fresco Log スナップショット

4

0 に答える 0