gadfi
@gadfi
https://gamega.org

Picasso как правильно кешировать картиники ?

Доброго времени суток.
Нужно выводить в listview картинки (примерно 186 kb каждая).
Картинки грузятся с сервера, загружаю с помощью picasso, кеширую с помощью OkHttp
@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View view = null;
        if (convertView == null) {
            LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            view = inflater.inflate(R.layout.albums_item, null);
            final ViewHolder viewHolder = new ViewHolder();
            viewHolder.image = (ImageView) view.findViewById(R.id.image);
            viewHolder.progress = (ProgressBar) view.findViewById(R.id.progressBar);
            view.setTag(viewHolder);
        } else {
            view = convertView;
        }
        final ViewHolder holder = (ViewHolder) view.getTag();
        holder.progress.setVisibility(View.VISIBLE);
        Picasso picasso;
        OkHttpClient okHttpClient;

        okHttpClient = new OkHttpClient();
        picasso = new Picasso.Builder(mContext)
                .downloader(new OkHttpDownloader(okHttpClient))
                .build();
        picasso.with(mContext)
                .load(getItem(position).getMain_photo_url())
                .into(holder.image, new Callback() {
                    @Override
                    public void onSuccess() {
                        holder.progress.setVisibility(View.GONE);
                    }

                    @Override
                    public void onError() {

                    }
                });
        return view;
    }


Мне нужно добиться того чтоб лента была как в Instagram─ то что уже загрузилось никуда не проподает, у меня же при прокрутке imageview очищается, кеширвание не помогло (более того оно толком не работает) при отключеном нете с кеша ничего не подгружается
  • Вопрос задан
  • 3262 просмотра
Пригласить эксперта
Ответы на вопрос 2
Lure_of_Chaos
@Lure_of_Chaos
Программист
Используйте слабые ссылки, типа WeakHaskMap
Ответ написан
Комментировать
@321SKART123
Picasso кеширует изображение на уровне http. Проверяйте заголовки которые отдаёт сервер хостящий картинки (ключевые слова "Cache-Control", "public, max-age, max-stale")

Если сервер отдает с малым временем "жизни", то теоретически можно унаследовав стандартный http клиент picasso подсунуть нужный заголовок - но это тяжко. Вообще на стеке сам автор на это отвечал - поищите

Также необходимо проверить размер дискового кеша и кеша в оперативке для picasso. Но ваша проблема скорее всего не в этом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы