2015-07-13 4 views
0

Я использую Picasso для загрузки изображений из Интернета и отображения их в RecyclerView.Picasso memory/disk cache

private Picasso createPicasso(Context context){ 

     OkHttpClient picassoClient = new OkHttpClient(); 

     picassoClient.interceptors().add(new Interceptor() { 
      @Override 
      public Response intercept(Interceptor.Chain chain) throws IOException { 

       try { 

        Map authHeaders = BackendServiceClient.buildAuthHeaders(); 

        Request newRequest = chain.request().newBuilder() 
          .addHeader("Authorization", (String) authHeaders.get("Authorization")) 
          .build(); 
        return chain.proceed(newRequest); 

       } catch (CredentialNotStoredException e) { 
        e.printStackTrace(); 
       } 
       return chain.proceed(chain.request().newBuilder().build()); 
      } 
     }); 

     return new Picasso.Builder(context) 
       .downloader(new OkHttpDownloader(picassoClient)) 
       .build(); 
    } 

Использование:

ImageDownloader.getSharedInstance().getPicasso(context) 
      .load(url) 
      .placeholder(R.drawable.head_big) // 
      .error(R.drawable.head_big) // 
      .tag(context) 
      .into(holder.personPhoto); 

Загрузка и отображение изображений работает, как ожидалось, но если я прокручивать список, изображения получает скачиваются из Интернета снова и не кэшируются. Как можно всегда кэшировать их на диске и в памяти.

+0

.... на стороне сервера должен поддерживать кэширование ... – Selvin

+0

Там нет никакого способа принуждения кэширования изображений на диске? – seeya

+1

первый поиск Google с правильными ключевыми словами возвращает ответ создателя этой библиотеки ... никогда не недооценивайте силу поиска Google – Selvin

ответ