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

У меня есть приложение, в котором я показываю цитату, а на заднем плане есть изображение. Когда я нажимаю кнопку «Далее», отображается следующая цитата и загружается новое изображение. Загрузка занимает около 0,5 секунды, и в качестве заполнителя используется предыдущее изображение. Но когда переключаюсь обратно, времени загрузки нет.

Это означает, что изображение где-то сохранено, поэтому его не нужно загружать повторно. К сожалению, это временно. Когда я увижу следующие 5 изображений и вернусь к первому, первое изображение нужно будет снова загрузить. Итак, я попробовал загрузить все картинки вначале (это всего 25 картинок), вот так:

Picasso.get().load(backgrounds.get(1));
Picasso.get().load(backgrounds.get(2));
Picasso.get().load(backgrounds.get(3));
Picasso.get().load(backgrounds.get(4));
Picasso.get().load(backgrounds.get(5));
Picasso.get().load(backgrounds.get(6));
Picasso.get().load(backgrounds.get(7));

и когда я нажимаю кнопку «Далее», я использую это:

Picasso.get().load(backgrounds.get(counterBackground)).fit().noPlaceholder().into(background);

Но и то, и другое без ожидаемого эффекта. Изображениям требуется время загрузки около 0,5 каждый раз, и «noPlaceholder» работает не так, как ожидалось, заполнитель все еще присутствует.

Итак, кто-нибудь знает, как сократить время загрузки? Мол, как вначале загрузить все изображения?

Спасибо за каждый ответ!


person Community    schedule 09.02.2020    source источник


Ответы (1)


Вы можете создать кеш при использовании Picasso, это приведет к более быстрой загрузке (пока изображения кешируются

Picasso picasso =  new Picasso.Builder(this).downloader(new OkHttpDownloader(getCacheDir(), 250000000)).build();
Picasso.setSingletonInstance(picasso);

исходный код

Вы можете использовать индикаторы, чтобы увидеть, откуда загружается изображение, используя

setIndicatorsEnabled(true)

источник

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

вы можете увидеть более подробную информацию здесь

Изменить

  1. Вы можете использовать Picasso.get().load(R.drawable.pic).into(imageview) Я думаю, это будет работать и для mipmap, обычно mipmap используются для ошибок / заполнителей для ваших ресурсов (если вы не используете чертежи)

  2. 2.

Вы можете создавать свои собственные политики о том, как кэшировать / загружать изображения.

Ссылка

person Anton Makov    schedule 09.02.2020
comment
Спасибо! Не могли бы вы прокомментировать свой код? Мол, что означает 250000000 после CacheDir? - person ; 10.02.2020
comment
Вы можете увидеть это по ссылке, которую я предоставил. Это в основном означает, что вы выделяете 250 МБ для кеширования. - person Anton Makov; 10.02.2020
comment
Я проверил вашу ссылку и ваш ответ. К сожалению, я не знаю, как это сделать с локальными файлами. Все мои изображения находятся внутри моего проекта. Вы можете мне с этим помочь? - person ; 10.02.2020
comment
Вы имеете в виду локальный файл или ресурс? Я никогда не пробовал использовать Picasso для загрузки ресурсов - person Anton Makov; 11.02.2020
comment
Ресурсы, сохранены в папке mipmap - person ; 11.02.2020