Glideのバックグラウンドスレッドのロードとキャッシュリソース
1492 ワード
バックグラウンドスレッドでのリソースのロードとキャッシュ
Glideは、バックグラウンドスレッドのメディアリソースのロードと処理を容易にするために、2つのAPIを追加しました. downloadOnly(int, int) into(int, int)
Glideの
その後、このキャッシュされた画像を表示したい場合は、次のようにします.
DiskCacheStrategyを使用する.ALLまたはDiskCacheStrategy.SOURCEは、Glideがこのキャッシュされたピクチャリソース(フルサイズのキャッシュ)を使用することを保証する.復号されたピクチャをバックグラウンドスレッドで処理したい場合は、
ただし、
references:
Glide Wiki
Glideは、バックグラウンドスレッドのメディアリソースのロードと処理を容易にするために、2つのAPIを追加しました.
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