検索
ホームページ类库下载java类库Glide のキャッシュ メカニズムを詳しく理解する

始める前に、xerces.jar ファイルと xalan.jar ファイルを java.class.path ディレクトリに置く必要があります (これら 2 つのファイルは Xalan-Java 1.2 に含まれており、xml.apache.org からダウンロードできます)。 。

1. Glide キャッシュの概要

2. キャッシュ キー

EngineKey

equals() メソッドと hashCode() メソッドは次のように書き換えられます。 EngineKey に渡されるすべてのパラメータが同じである場合にのみ、同じ EngineKey オブジェクトが同じであるとみなされるようにします。

3. メモリ キャッシュ

Glide.with(this)
     .load(url)
     .skipMemoryCache(true)
     .into(imageView);

LruCache アルゴリズム (最も最近使用されたもの)
Android 大きな画像と複数画像のソリューションを効率的に読み込み、プログラムの OOM を効果的に回避

#​​
##LruCache アルゴリズム (最も最近使用されていないアルゴリズムとも呼ばれる) を考えるのは非常に簡単です。 。その主なアルゴリズム原理は、最近使用されたオブジェクトを強参照とともに LinkedHashMap に保存し、キャッシュ値が事前設定値に達する前に、最も最近使用されていないオブジェクトをメモリから削除することです。 LruCache の使用法も比較的簡単です

キャッシュされたイメージを取得するには、loadFromCache() メソッドが使用されます。取得した場合は、コールバックのために cb.onResourceReady() メソッドが直接呼び出されます。取得されていない場合は、26 行目でloadFromActiveResources() メソッドが呼び出され、キャッシュされたイメージが取得された場合は、直接コールバックが行われます。どちらのメソッドもキャッシュを取得しない場合にのみ、実行は続行され、イメージをロードするためにスレッドが開かれます。

loadFromCache() とloadFromActiveResources()。これら 2 つの方法のうち 1 つは LruCache アルゴリズムを使用し、もう 1 つは弱い参照を使用します。

ハードディスク キャッシュ

Glide.with(this)
     .load(url)
     .diskCacheStrategy(DiskCacheStrategy.NONE)
     .into(imageView);

DiskCacheStrategy.NONE: コンテンツをキャッシュしないことを示します。

DiskCacheStrategy.SOURCE: 元のイメージのみがキャッシュされることを示します。
DiskCacheStrategy.RESULT: 変換されたイメージのみがキャッシュされることを示します (デフォルト オプション)。
DiskCacheStrategy.ALL: 元のイメージと変換されたイメージの両方がキャッシュされることを示します。

DiskLruCache

Android DiskLruCache は完全に解決され、ハードディスク キャッシュに最適なソリューションです

private Resource<?> decode() throws Exception {    if (isDecodingFromCache()) {        return decodeFromCache();
    } else {        return decodeFromSource();
    }
}

ここでは、まず DecodeJob の decodeResultFromCache() メソッドを呼び出して取得します。キャッシュを取得できない場合は、decodeSourceFromCache() メソッドが再度呼び出され、キャッシュを取得します。これ以上説明する必要はありません。

高度なスキル

たとえば、グループの友人が以前、プロジェクトの写真リソースはすべて Qiniu Cloud に保存されていると教えてくれました。画像リソースの場合、Qiniu Cloud は画像 URL アドレスにトークン パラメーターを追加します。つまり、画像の URL アドレスは次の形式になります:

http://url.com/image.jpg?token=d9caa6e02c990b0a

public class MyGlideUrl extends GlideUrl {

    private String mUrl;    public MyGlideUrl(String url) {        super(url);
        mUrl = url;
    }    @Override
    public String getCacheKey() {        return mUrl.replace(findTokenParam(), "");
    }    private String findTokenParam() {
        String tokenParam = "";        int tokenKeyIndex = mUrl.indexOf("?token=") >= 0 ? mUrl.indexOf("?token=") : mUrl.indexOf("&token=");        if (tokenKeyIndex != -1) {            int nextAndIndex = mUrl.indexOf("&", tokenKeyIndex + 1);            if (nextAndIndex != -1) {
                tokenParam = mUrl.substring(tokenKeyIndex + 1, nextAndIndex + 1);
            } else {
                tokenParam = mUrl.substring(tokenKeyIndex);
            }
        }        return tokenParam;
    }

}
Glide.with(this)
     .load(new MyGlideUrl(url))
     .into(imageView);
関連する推奨事項:

PHP は Java で DatainputStream クラスを実装します。

mysql_MySQL に接続する Java メソッド


以上がGlide のキャッシュ メカニズムを詳しく理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール