2016-08-24 5 views
0

Я использую Picasso, чтобы загрузить изображение в мой ImageView как это:Очистить кэш сети с помощью Пикассо

Picasso.with(getContext()) 
     .load(store.getString("profile")) 
     .placeholder(R.drawable.ic_nothumb) 
     .resize(120, 120) 
     .into(iv); 

Где store.getString("profile") = a строка, представляющая мой URL.

Однако, даже если путь не изменяется, когда я обновляю изображение в том же пути, Picasso все еще загружает предыдущее изображение.

Я прочитал, что мы можем очистить кэш сети, но я не могу найти способ использовать .invalidate() метод, ни .cachePolicy() или .networkPolicy(), когда я пытаюсь использовать их у меня есть неразрешенный символ.

EDIT: Я обновил свой Picasso версию для компиляции

"com.squareup.picasso:picasso:2.5.2" 

И теперь я могу использовать .networkPolicy(), однако я получил эту ошибку я не могу найти какое-либо решение, чтобы исправить это:

E/AndroidRuntime: FATAL EXCEPTION: main Process: dev.com.diaginfo, PID: 10614 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/squareup/picasso/NetworkPolicy; Caused by: java.lang.ClassNotFoundException: Didn't find class "com.squareup.picasso.NetworkPolicy" on path: DexPathList

+0

Отметьте это сообщение http://stackoverflow.com/questions/22016382/invalidate-cache-in-picasso –

+0

«Я прочитал, что мы можем очистить сетевой кеш, но я не могу найти способ использования метода .invalidate(), а также .cachePolicy() или .networkPolicy(), когда я пытаюсь их использовать, у меня есть Unresolved Symbol. " –

+0

Новая ошибка, с которой вы сталкиваетесь, вероятно, вызвана переходом по пределу dex. Однако это совершенно другой случай и должен быть опубликован в новом вопросе. – manabreak

ответ

1

Вы должны сказать Пикассо явно не кэшировать изображение:

Picasso.with(getContext()) 
    .load(store.getString("profile")) 
    .placeholder(R.drawable.ic_nothumb) 
    .resize(120, 120) 
    .networkPolicy(NetworkPolicy.NO_CACHE) 
    .into(iv); 
+0

".cachePolicy() или .networkPolicy(), когда я пытаюсь их использовать, у меня есть неразрешенный символ." –

+0

На каком этапе вы пытаетесь их использовать? Они должны работать, если они вызываются до 'in()'. – manabreak

+0

в сетевой политике «P» находится в Caps. Используйте этот Picasso.with (getContext()) .load (store.getString ("профиль")) .placeholder (R.drawable.ic_nothumb) .resize (120, 120) .networkPolicy (NetworkPolicy.NO_CACHE) .into (IV); –

0

Picaso использовать ur url как ключ для кеширования. при обновлении изображения используйте метку времени, чтобы это произошло. Я использовал и работал как шарм