2015-04-29 4 views
0

Я хочу показать изображение профиля Facebook с помощью URL, но всякий раз, когда пользователь меняет изображение своего профиля, эта библиотека не обновляет кешированное изображение.UIL обновление кэшированных изображений

Моя УИЛ версия 1.9.3, опции отображения:

new DisplayImageOptions.Builder() 
      .showImageOnLoading(android.R.color.white) 
      .cacheInMemory(true) 
      .cacheOnDisk(true) 
      .considerExifParams(true) 
      .build(); 

Так как я должен проверить, если изображение в URL изменилось? Или, может быть, вы знаете другую библиотеку, у которой есть эта функция?

Спасибо!

+0

вы храните facebook ID пользователя? – TheLittleNaruto

+0

https://github.com/nostra13/Android-Universal-Image-Loader/issues/775 – NOSTRA

ответ

0

UIL имеет многопоточную загрузку изображений (асинхронно или синхронно). См. Функции библиотеки на github.

Включить кеширование на диске (файловая система устройства или SD-карта) .cacheOnDisk(true). Библиотека загружает изображение из этого кеша. Отключить кэширование .cacheOnDisk(false) диска и записать следующий код в вашей деятельности:

@Override 
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 
    ... 
    DisplayImageOptions displayOptions = new DisplayImageOptions.Builder() 
       .showImageOnLoading(R.drawable.ic_preview) 
       .showImageForEmptyUri(R.drawable.ic_preview) 
       .showImageOnFail(R.drawable.ic_preview) 
       .cacheInMemory(true) 
       .cacheOnDisc(false) 
       .considerExifParams(true) 
       .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(this) 
       .writeDebugLogs() 
       .defaultDisplayImageOptions(displayOptions)    
       .build(); 

    ImageLoader imageLoader = ImageLoader.getInstance(); 
    imageLoader.init(config); 

    AnimateFirstDisplayListener animate = new AnimateFirstDisplayListener(); 

    imageLoader.displayImage(YourImageURL, userIv, animate); 
    ... 
} 

public static class AnimateFirstDisplayListener extends SimpleImageLoadingListener { 

    static final List<String> displayedImages = Collections.synchronizedList(new LinkedList<String>()); 

    @Override 
    public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { 
     if (loadedImage != null) { 
      ImageView imageView = (ImageView) view; 
      boolean firstDisplay = !displayedImages.contains(imageUri); 
      if (firstDisplay) { 
       FadeInBitmapDisplayer.animate(imageView, 500); 
       displayedImages.add(imageUri); 
      } 
     } 
    } 
}