Glideのバックグラウンドスレッドのロードとキャッシュリソース

1492 ワード

バックグラウンドスレッドでのリソースのロードとキャッシュ
Glideは、バックグラウンドスレッドのメディアリソースのロードと処理を容易にするために、2つのAPIを追加しました.
  • downloadOnly(int, int)
  • into(int, int)

  • GlideのdownloadOnly(int, int) APIでは、後で使用できるように、画像のバイトをディスクにダウンロードできます.UIスレッドで非同期で使用するか(パラメータとしてTargetが必要)、バックグラウンドスレッドで同期して使用することができます(パラメータとして整数の幅と高さが必要です).バックグラウンドスレッドで画像を同期してダウンロードします(画像のみをディスクにダウンロードし、処理しません):
    FutureTarget<File> future = Glide.with(applicationContext)
        .load(yourUrl)
        .downloadOnly(500, 500);
    File cacheFile = future.get();

    その後、このキャッシュされた画像を表示したい場合は、次のようにします.
    Glide.with(yourFragment)
        .load(yourUrl)
        .diskCacheStrategy(DiskCacheStrategy.ALL)
        .into(yourView);

    DiskCacheStrategyを使用する.ALLまたはDiskCacheStrategy.SOURCEは、Glideがこのキャッシュされたピクチャリソース(フルサイズのキャッシュ)を使用することを保証する.復号されたピクチャをバックグラウンドスレッドで処理したい場合は、downloadOnly(int, int)を使用しないでください.into(int, int) APIでFutureTargetを取得し、.get()を使用してBitmapを取得することができます.500*500のcenterCrop画像を取得すると、次のようになります.
    Bitmap myBitmap = Glide.with(applicationContext)
        .load(yourUrl)
        .asBitmap()
        .centerCrop()
        .into(500, 500)
        .get()

    ただし、.get()はプライマリ・スレッドをブロックし、Appのパフォーマンスとインタラクションに影響を与えるため、プライマリ・スレッドでは使用しないほうがよいことに注意してください.
    references:
    Glide Wiki