2016-04-28 5 views
3

я использовать универсальный загрузчик изображений, чтобы загрузить изображение из URL
это адаптерандроид универсального загрузчика изображений очистить кэш

public class BinderDataImg extends BaseAdapter { 

static final String KEY_IMG = "img"; 
LayoutInflater inflater; 
List<HashMap<String,String>> imgHashmap; 
ViewHolder holder; 

ImageLoader imageLoader = ImageLoader.getInstance(); 

public BinderDataImg(Activity act, List<HashMap<String,String>> map) { 
    this.imgHashmap = map; 
    inflater = (LayoutInflater) act 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
} 

public int getCount() { 
    // TODO Auto-generated method stub 
    return imgHashmap.size(); 
} 

public Object getItem(int arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 

public long getItemId(int position) { 
    // TODO Auto-generated method stub 
    return 0; 
} 

public View getView(int position, View convertView, ViewGroup parent) { 
    View vi=convertView; 
    if(convertView==null){ 
     vi = inflater.inflate(R.layout.list_img, null); 
     holder = new ViewHolder(); 
     holder.iv_img =(ImageView)vi.findViewById(R.id.imageViewImg); 

     vi.setTag(holder); 
    } 
    else{ 

     holder = (ViewHolder)vi.getTag(); 
    } 

    String uri = imgHashmap .get(position).get(KEY_IMG); 

    imageLoader.displayImage(uri, holder.iv_img); 

    return vi; 
} 

static class ViewHolder{ 
    ImageView iv_img; 
} 

}

это деятельность

List<ClassImg> imgList = null; 
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder() 
      .cacheOnDisk(true).cacheInMemory(true) 
      .imageScaleType(ImageScaleType.EXACTLY) 
      .bitmapConfig(Bitmap.Config.RGB_565) 
      .resetViewBeforeLoading(true) 
      .displayer(new FadeInBitmapDisplayer(300)) 
      .showImageForEmptyUri(R.drawable.hinh_error) 
      .showImageOnFail(R.drawable.hinh_internet) 
      .showImageOnLoading(R.drawable.hinh_loading) 
      .build(); 

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getApplicationContext()) 
      .defaultDisplayImageOptions(defaultOptions) 
      .memoryCache(new WeakMemoryCache()) 
      .threadPoolSize(3) 
      .diskCacheSize(100 * 1024 * 1024) 
      .build(); 

    ImageLoader.getInstance().init(config); 

    final CustomListView lvi = (CustomListView)findViewById(R.id.listViewHinh); 

    try { 
     XmlPullParser parser = new XmlPullParser(); 
     imgList = parser.parse(getAssets().open(file_xml); 
     BinderDataImg binderdata = new BinderDataImg(this, imgHashmap); 
     lvi.setAdapter(binderdata); 

    }catch(IOException e) { 
     e.printStackTrace(); 
    } 
} 

я могу загрузить изображение и кеш изображений в памяти и диске является идеальным.
, но я хочу, чтобы кэш активности начал очищаться или при нажатии кнопки «Назад», чтобы оставить активность, удалит кеш в памяти и кеш на диске.
как это сделать?
извините за мой плохой английский
спасибо для чтения.

+0

Вам не нужно очищать кеш себя, потому что система сделает это за вас – thunder413

+0

http://stackoverflow.com/a/19512974/1739882 –

+0

@ thunder413: это правильно? – abcd1234

ответ

3

Вы можете использовать DiskCacheUtils и MemoryCacheUtils удалить конкретное изображение с помощью URL изображения

DiskCacheUtils.removeFromCache(imageUrl, ImageLoader.getInstance().getDiskCache());  
MemoryCacheUtils.removeFromCache(imageUrl, ImageLoader.getInstance().getMemoryCache()); 

или полностью очистить кэш

ImageLoader.getInstance().clearMemoryCache() 
ImageLoader.getInstance().clearDiskCache() 

Чтобы очистить кэш, когда активность создана вы можете называть это методы после инициализации ваш ImageLoader

Чтобы очистить кеш при выходе из операции, вы можете вызвать методы в onDestroy(), но я должен помнить, что система может убить вашу деятельность без вызова этого метода.

+0

добавить второе решение после ImageLoader.getInstance(). Init (config); в деятельности? – abcd1234

+0

как об ошибке OutOfMemory? – abcd1234

+0

Вы должны посмотреть подсказку №4 на странице https://github.com/nostra13/Android-Universal-Image-Loader/wiki/Useful-Info – Alex

0

Класс ImageLoader имеет два способа очистки кешей: clearMemoryCache и clearDiscCache. Назовите их в действии onDestroy метод сделает то, что вы ищете.

+0

, но при повторной загрузке лог-шоу кота Попробуйте инициализировать ImageLoader которые уже были инициализированы ранее. Чтобы перезапустить ImageLoader с новым. что это? и некоторая загрузка изображения снова и ошибка OutOfMemory. – abcd1234

+0

Чтобы избежать сообщения «уже было инициализировано», введите свою конфигурационную часть в класс, который расширяет «приложение» вместо вашей активности. –

+0

Я не понимаю, вы можете это объяснить? – abcd1234

 Смежные вопросы

  • Нет связанных вопросов^_^