始める前に、xerces.jar ファイルと xalan.jar ファイルを java.class.path ディレクトリに置く必要があります (これら 2 つのファイルは Xalan-Java 1.2 に含まれており、xml.apache.org からダウンロードできます)。 。
1. Glide キャッシュの概要
EngineKey
equals() メソッドと hashCode() メソッドは次のように書き換えられます。 EngineKey に渡されるすべてのパラメータが同じである場合にのみ、同じ EngineKey オブジェクトが同じであるとみなされるようにします。
Glide.with(this) .load(url) .skipMemoryCache(true) .into(imageView);
LruCache アルゴリズム (最も最近使用されたもの)
Android 大きな画像と複数画像のソリューションを効率的に読み込み、プログラムの OOM を効果的に回避
##LruCache アルゴリズム (最も最近使用されていないアルゴリズムとも呼ばれる) を考えるのは非常に簡単です。 。その主なアルゴリズム原理は、最近使用されたオブジェクトを強参照とともに LinkedHashMap に保存し、キャッシュ値が事前設定値に達する前に、最も最近使用されていないオブジェクトをメモリから削除することです。 LruCache の使用法も比較的簡単ですloadFromCache() とloadFromActiveResources()。これら 2 つの方法のうち 1 つは LruCache アルゴリズムを使用し、もう 1 つは弱い参照を使用します。 ハードディスク キャッシュキャッシュされたイメージを取得するには、loadFromCache() メソッドが使用されます。取得した場合は、コールバックのために cb.onResourceReady() メソッドが直接呼び出されます。取得されていない場合は、26 行目でloadFromActiveResources() メソッドが呼び出され、キャッシュされたイメージが取得された場合は、直接コールバックが行われます。どちらのメソッドもキャッシュを取得しない場合にのみ、実行は続行され、イメージをロードするためにスレッドが開かれます。
Glide.with(this) .load(url) .diskCacheStrategy(DiskCacheStrategy.NONE) .into(imageView);
DiskCacheStrategy.NONE: コンテンツをキャッシュしないことを示します。DiskLruCacheDiskCacheStrategy.SOURCE: 元のイメージのみがキャッシュされることを示します。
DiskCacheStrategy.RESULT: 変換されたイメージのみがキャッシュされることを示します (デフォルト オプション)。
DiskCacheStrategy.ALL: 元のイメージと変換されたイメージの両方がキャッシュされることを示します。
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 クラスを実装します。
以上がGlide のキャッシュ メカニズムを詳しく理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。