Glide. Кэш на внешнее хранилище (SD-карта)

Я использую Glide для загрузки изображений в моем приложении для Android.
После обновления 3.5 разработчики предоставили интерфейс GlideModule.
Согласно этой статье (Disk Cache) я могу установить каталог кэша, используя setDiskCache метод и ExternalCacheDiskCacheFactory,
Но я не вижу никакой разницы. Весь кэш все еще находится во Внутреннем хранилище в каталоге кеша по умолчанию.


build.gradle:

dependencies {
    ...
    compile 'com.github.bumptech.glide:glide:3.6.1'
}

Манифест Android:

<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.with(context)
.load("some_url")
.dontAnimate()
.centerCrop()
.override(100, 100)
.into(holder.iv_image);

1 ответ

Решение

Установить GlideBuilder со значением setDiskCache Вы можете установить свой ExternalStorageDirectory как каталог кеша.

  if (!Glide.isSetup()) {
   GlideBuilder gb = new GlideBuilder(this);
   DiskCache dlw = DiskLruCacheWrapper.get(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/YourCacheDirectory/"), 250 * 1024 * 1024);
   gb.setDiskCache(dlw);
   Glide.setup(gb);
}

Проверка не может установить GlideBuilder

Надеюсь, это поможет вам.

Другие вопросы по тегам