Сохраняйте изображения в picasso с собственным ключом кеша

Есть ли способ загрузить изображения в кеш изображений Пикассо, указав используемый ключ кеша?

Кстати, если это невозможно, я внес необходимые изменения, но не знаю, как перестроить банку. Любые инструкции по восстановлению Picasso очень ценятся.


person LostPuppy    schedule 15.09.2014    source источник
comment
Это кажется очень логичным вопросом. Интересно, почему на него нет ответов!   -  person Alireza Farahani    schedule 29.06.2015


Ответы (3)


Вы можете вызвать стабильный ключ для вашего объекта requestCreator.

https://square.github.io/picasso/2.x/picasso/com/squareup/picasso/RequestCreator.html#stableKey-java.lang.String-

Это будет так: Picasso.with(context).load(yourURL).stableKey(yourKey).into(textView);

person gugarush    schedule 03.10.2016

Я не нашел публичного доступа к этой функциональности, но для меня работает этот обходной путь:

//1. Init picasso, create cache
mCache = new LruCache(mContext);
mPicasso = new Picasso.Builder(mContext).memoryCache(mCache).build();

//2. Load bitmap 
mPicasso.load(uri).resize(mThumbWidth, mThumbHeight).centerCrop().into(v, callback);

//3. In case of error (for example, in callback), you can manually download the picture and store to cache
Bitmap bmp = <custom load>
//make key
StringBuilder sb = new StringBuilder(uri);
sb.append("\nresize:").append(mThumbWidth).append("x").append(mThumbHeight).append("\ncenterCrop\n");
mCache.set(sb.toString(), bmp);

Обратите внимание, что ключ используется uri и ваше пользовательское преобразование (изменение размера, центрирование и т. д., см. подробнее на com.squareup.picasso.Utils#createKey)

person avesha    schedule 25.01.2016

это сработало для меня

String strUrl = WWW.sultan.com....;    
    Bitmap = bitmap;
    Picasso.with(Profile.this).load(strUrl).into(new Target() {
        @Override
        public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
            userImage.setImageBitmap(bitmap);
            this.bitmap = bitmap; //this can be used any where in the code   

        }

        @Override
        public void onBitmapFailed(Drawable errorDrawable) {

        }

        @Override
        public void onPrepareLoad(Drawable placeHolderDrawable) {

        }
    });
person Sultan Ali    schedule 07.10.2016