RecyclearView + Glide + Scroll: загрузка изображений занимает слишком много времени или не загружается

Я использую Glide Image Loader. загрузка изображения с сервера занимает слишком много времени (более 200 секунд), а в некоторых случаях не загружается. Все изображения хранятся на облачном сервере.

Когда я прокручиваю вверх, изображение отображается как в первый раз, и для его отображения требуется немного времени, кэширование изображений также не работает должным образом. В приложениях, таких как Amazon, одноразово загруженное изображение Facebook не исчезает. Я хочу такую ​​же технику в моем приложении.

Я использую Staggered Gridview, используя DynamicheightImageview, для этого я вызываю AsyncTask на onBindViewHolder

   new GetImageTask(singleArtDataitem, vh.imageView, position).execute(singleArtDataitem);

AsyncTask

     private class GetImageTask extends AsyncTask<SingleArtData, Void, Float> {


        private SingleArtData item;
        private final DynamicHeightImageView imageView;
        int position;

        public GetImageTask(SingleArtData item, DynamicHeightImageView holder, int position) {
            this.imageView = holder;
            this.position = position;
        }

        @Override
        protected Float doInBackground(SingleArtData... params) {
            item = params[0];
             try {

                if (GlobalMethods.isNotEmpty(item.getImageName())) {
                    item.setImagefullurl(baseuri + item.getImageName());
                    URL neturl = new URL(item.getImagefullurl());
                    final Bitmap image = BitmapFactory.decodeStream(neturl.openConnection().getInputStream());
                    int width = image.getWidth();
                    int height = image.getHeight();
                    item.setImage_width(width);
                    item.setImage_height(height);
                    float ratio = (float) height / (float) width;
                    item.setImage_ratio(ratio);
                } else {
                    item.setImagefullurl(null);
                }
            } catch (Exception e) {

                item.setImagefullurl(null);
                e.printStackTrace();
            }
            return item.getImage_ratio();
        }

        @Override
        protected void onPostExecute(Float result) {

            RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) imageView.getLayoutParams();
            rlp.height = (int) (rlp.width * result);
            imageView.setLayoutParams(rlp);
            imageView.setHeightRatio(result);

            if (GlobalMethods.isNotEmpty(item.getImagefullurl())) {
//                Picasso.with(mContext)
//                        .load(baseuri + item.getImageName()).placeholder(PlaceHolderDrawableHelper.getBackgroundDrawable(position))
//                        .error(R.drawable.ic_med)
//                        .into(imageView);
                Glide.with(MyApplication.getInstance())
                        .load(item.getImagefullurl()).placeholder(PlaceHolderDrawableHelper.getBackgroundDrawable(position))
                        .error(R.drawable.loadicon)
                        .placeholder(PlaceHolderDrawableHelper.getBackgroundDrawable(position))
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .skipMemoryCache(false)
                        .into(imageView);
            }


        }


    }

Заранее спасибо.

0 ответов

Другие вопросы по тегам