Ich verwende Glide zum Laden von Bildern in meiner Android-Anwendung.
Nach 3.5 Update, Entwickler zur Verfügung gestellt GlideModule Schnittstelle.
Nach this article (Disk Cache) kann ich Cache-Verzeichnis mit setDiskCache
Methode und ExternalCacheDiskCacheFactory
festlegen.
Aber ich sehe keinen Unterschied. Der gesamte Cache befindet sich noch im internen Speicher im Standard-Cache-Verzeichnis.
Gleiten. Zwischenspeicher für externen Speicher (SD-Karte)
build.gradle:
dependencies {
...
compile 'com.github.bumptech.glide:glide:3.6.1'
}
Android Manifest:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application ...>
<meta-data
android:name="com.myapp.GlideConfig"
android:value="GlideModule" />
</application>
GlideConfig.java:
public class GlideConfig implements GlideModule {
@Override
public void applyOptions(Context context, GlideBuilder builder) {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
Log.e("GlideConfig", "MEDIA_MOUNTED");
builder.setDiskCache(
context.getString(R.string.app_name),
419430400));//400Mb
//Environment.getExternalStorageDirectory().getPath()
// + "/"
// + context.getString(R.string.app_name)
}
else {
Log.e("GlideConfig", "!MEDIA_MOUNTED");
}
}
@Override
public void registerComponents(Context context, Glide glide) {
}
}
proguard-rules.pro:
...
-keepnames class * com.myapp.GlideConfig
Glide mit:
Glide.with(context)
.load("some_url")
.dontAnimate()
.centerCrop()
.override(100, 100)
.into(holder.iv_image);
Was halten Sie für das 'interne Speicher-Standard-Cache-Verzeichnis'? Der Code sieht für mich OK aus, also frage ich mich, ob das nur eine Frage der Verwirrung darüber ist, was Android als internen/externen Speicher ansieht. –
@TimMalseed, es gibt keine Verwirrung. Glide und andere Image Loader setzen den Image-Cache standardmäßig auf '/data/data/com.package/cache' (Interner Speicher). Aber "GlideModule" -Funktion sollte den Trick machen. Vielleicht vermisse ich etwas. –
Mit welchem Gerät/ROM testen Sie dies? Du kannst nicht sagen "es gibt keine Verwirrung". Wenn es um interne/externe Speicherung auf Android geht, sind selbst Google verwirrt. –