Io uso Glide per caricare immagini nella mia applicazione Android.
Dopo l'aggiornamento 3.5, gli sviluppatori hanno fornito l'interfaccia GlideModule.
In base a this article (Disk Cache) È possibile impostare la directory della cache, utilizzando il metodo setDiskCache
e ExternalCacheDiskCacheFactory
.
Ma non vedo alcuna differenza. Tutta la cache è ancora nella memoria interna nella directory cache predefinita.
Glide. Cache su memoria esterna (scheda SD)
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 utilizzando:
Glide.with(context)
.load("some_url")
.dontAnimate()
.centerCrop()
.override(100, 100)
.into(holder.iv_image);
Quale consideri la "directory cache predefinita di archiviazione interna"? Il codice mi sembra OK, quindi mi chiedo se si tratta solo di una questione di confusione su ciò che Android considera archiviazione interna/esterna .. –
@TimMalseed, non c'è confusione. Glide e altri caricatori di immagini mettono l'image-cache su '/data/data/com.package/cache' (memoria interna) per impostazione predefinita. Ma la funzione 'GlideModule' dovrebbe fare il trucco. Forse mi manca qualcosa. –
Quale dispositivo/ROM stai testando? Non puoi dire "non c'è confusione". Quando si tratta di archiviazione interna/esterna su Android, anche Google è confuso. –