2

特定の URL で識別される画像があります。この画像を取得するには、リクエスト URL にタイムスタンプと署名パラメーター (他のパラメーターに基づく署名ベース) が必要です。URL は、タイムスタンプと署名に依存するため、クライアントが要求するたびに変更されます。したがって、以下のように Glide を使用して画像をロードする場合:

Glide.with(mContext).load(url).into(imageView);

問題は、同じ画像を使用しても、何度も読み込まれ、何度もキャッシュされることです (URL が異なるため)。

Cache Key の equals メソッドをオーバーライドするキャッシュ ラッパーを作成したいのですが、Glide の開始方法がわかりません。

誰かが助けてくれたら、とても感謝しています

ありがとう

4

1 に答える 1

2

最後に、要件を取得するために GlideUrl をカスタマイズしました

public class GlideUrlKey extends GlideUrl {
    public GlideUrlKey(URL url) { super(url); }
    public GlideUrlKey(String url) { super(url); }
    public GlideUrlKey(URL url, Headers headers) { super(url, headers); }
    public GlideUrlKey(String url, Headers headers) { super(url, headers); }

    @Override public String getCacheKey() {
        String url = toStringUrl();
        if (url.contains("fl_id") && url.contains("fl_rel")) {
            String tempUrl = url.substring(0, url.lastIndexOf("&data%5Bsign%5D"));
            if (tempUrl.length() == 0) {
                tempUrl = url.substring(0, url.lastIndexOf("data[sign]") - 1);
                if (tempUrl.length() == 0) {
                    tempUrl = url.substring(0, url.lastIndexOf("fl_rel"));
                }
            }
            return tempUrl;
        } else {
            return url;
        }
    }
}
于 2015-08-19T08:08:57.310 に答える