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

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


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

Настройка 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

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

Intereting Posts
Как найти температуру города по долготе и широте в андроиде? Как я могу узнать, какое намерение запускается сервис (а не в моем приложении)? Как увеличить всю активность на мультитач? Почему UiDevice # UIDevice для Android uChreenshot всегда возвращает false на эмуляторе Android HttpClient, DefaultHttpClient, HttpPost Нарисовать текст на Карте Google больше невозможно? Ошибка на httppost с Android Добавление действия кнопки в пользовательское уведомление Эквивалент PopupMenu в ActionBarSherlock Подсветка синтаксиса Android? Как получить текущее местоположение для этого кода карты? Также пытаюсь получить данные о транспортных средствах с сервера, когда я открываю карту Настроить изображение (фото) на Chromecast Framebuffer FBO визуализировать текстуру очень медленно, используя OpenGL ES 2.0 на Android, почему? Выполнение долговременной работы в onDestroy Нечетное поведение: тип класса объекта, перенастроенного методом getText () изменений TextView после создания AccessibilityNodeInfo в TextView