Does Glide fit every image request? Repeat load is very slow when scrolling

I saw a very long image loading time in our application using Glide 3.6 + RecyclerView using the GridLayoutManager. Images are all around 20kb-40kb. It seems that glide queues all requests that cause images to load for quite some time after scrolling down the list. I linked logs from the GenericRequest class.

V/GenericRequest﹕ finished setup for calling load in 0.170291 this: 249721749 V/GenericRequest﹕ finished onSizeReady in 0.36724999999999997 this: 249721749 V/GenericRequest﹕ finished run method in 0.763083 this: 249721749 V/GenericRequest﹕ Got onSizeReady in 0.041249999999999995 this: 991315424 V/GenericRequest﹕ finished setup for calling load in 0.15479199999999999 this: 991315424 V/GenericRequest﹕ finished onSizeReady in 0.30008399999999996 this: 991315424 V/GenericRequest﹕ finished run method in 0.499959 this: 991315424 V/GenericRequest﹕ Got onSizeReady in 0.060584 this: 1029510845 V/GenericRequest﹕ finished setup for calling load in 0.200625 this: 1029510845 V/GenericRequest﹕ finished onSizeReady in 0.39233399999999996 this: 1029510845 V/GenericRequest﹕ finished run method in 0.670084 this: 1029510845 V/GenericRequest﹕ Got onSizeReady in 0.048374999999999994 this: 516458536 V/GenericRequest﹕ finished setup for calling load in 0.188666 this: 516458536 V/GenericRequest﹕ finished onSizeReady in 0.379916 this: 516458536 V/GenericRequest﹕ finished run method in 0.654083 this: 516458536 V/GenericRequest﹕ Resource ready in 1012.49325 size: 2.18359375 fromCache: false this: 671303046 V/GenericRequest﹕ Got onSizeReady in 0.073833 this: 356666200 V/GenericRequest﹕ finished setup for calling load in 0.240667 this: 356666200 V/GenericRequest﹕ finished onSizeReady in 0.460792 this: 356666200 V/GenericRequest﹕ finished run method in 0.780708 this: 356666200 V/GenericRequest﹕ Got onSizeReady in 0.064583 this: 347417463 V/GenericRequest﹕ finished setup for calling load in 0.242583 this: 347417463 V/GenericRequest﹕ finished onSizeReady in 0.45758299999999996 this: 347417463 V/GenericRequest﹕ finished run method in 0.7521249999999999 this: 347417463 V/GenericRequest﹕ Got onSizeReady in 0.142833 this: 671303046 V/GenericRequest﹕ finished setup for calling load in 0.38966599999999996 this: 671303046 V/GenericRequest﹕ finished onSizeReady in 0.703708 this: 671303046 V/GenericRequest﹕ finished run method in 1.851125 this: 671303046 V/GenericRequest﹕ Got onSizeReady in 0.056957999999999995 this: 634418527 V/GenericRequest﹕ finished setup for calling load in 0.21787499999999999 this: 634418527 V/GenericRequest﹕ finished onSizeReady in 0.443083 this: 634418527 V/GenericRequest﹕ finished run method in 0.7567499999999999 this: 634418527 V/GenericRequest﹕ Resource ready in 3443.041335 size: 2.18359375 fromCache: false this: 249721749 V/GenericRequest﹕ Resource ready in 4110.604794 size: 3.8623809814453125 fromCache: false this: 1054166306 V/GenericRequest﹕ Resource ready in 3824.033544 size: 3.8623809814453125 fromCache: false this: 991315424 V/GenericRequest﹕ Resource ready in 3773.0562109999996 size: 3.8623809814453125 fromCache: false this: 1029510845 V/GenericRequest﹕ Resource ready in 4542.90796 size: 2.18359375 fromCache: false this: 516458536 V/GenericRequest﹕ Resource ready in 4171.866168 size: 3.8623809814453125 fromCache: false this: 634418527 V/GenericRequest﹕ Resource ready in 4474.170752 size: 3.8623809814453125 fromCache: false this: 356666200 V/GenericRequest﹕ Resource ready in 4496.104085 size: 2.18359375 fromCache: false this: 671303046 V/GenericRequest﹕ Resource ready in 4814.625126999999 size: 2.18359375 fromCache: false this: 347417463 

I wonder if anyone can give some idea of ​​what might be the problem. Maybe this is the time it takes to resize? I use match_parent for view width and fixed height of about 200dp .

Images are uploaded using

 Glide.with(fragmentContext) .load(imageUrl) .centerCrop() .placeholder(R.drawable.placeholder) .into(viewHolder.productImage); 

XML

 <ImageView android:id="@+id/product_image" android:layout_width="match_parent" android:layout_height="@dimen/product_image_height" (208dp) android:layout_gravity="top" android:background="@color/placeholder_bg" /> 

EDIT: In accordance with the remark of Vladimir Mironov. I updated with an enlarged pool and clearing pending loads when the view is redesigned. This seems to have helped a bit when it scrolls fast. Does overriding provide or not using match_parent to represent, does it have any benefits when you view the dimension? There are still cases where the view will not be displayed for almost 5 seconds.

+7
android android-recyclerview android-glide
source share
1 answer

Switching to PercentFrameLayout greatly helped my project with the scroll speed of images in RecyclerView. ( Adapted from the Bumptech Issues section of the GitHub page )

 <android.support.percent.PercentFrameLayout android:layout_width="match_parent" android:layout_height="@dimen/product_image_height" (208dp) android:layout_gravity="top" android:background="@color/placeholder_bg" <ImageView android:id="@+id/product_image" app:layout_widthPercent="100%" /> </android.support.percent.PercentFrameLayout> 

Then in onBindViewHolder()

 int srcHeight = getImageHeight(); // hopefully you know the image height & width int srcWidth = getImageWidth(); PercentFrameLayout.LayoutParams layoutParams = (PercentFrameLayout.LayoutParams) viewHolder.productImage.getLayoutParams(); PercentLayoutHelper.PercentLayoutInfo layoutInfo = layoutParams.getPercentLayoutInfo(); if(srcHeight > 0) { // being careful about potential divide by 0 errors layoutInfo.aspectRatio = (float)srcWidth / (float)srcHeight; } else { layoutInfo.aspectRatio = 1; } layoutParams.height = 0; viewHolder.productImage.setLayoutParams(layoutParams); Glide.with(fragmentContext) .load(imageUrl) .centerCrop() .placeholder(R.drawable.placeholder) .into(viewHolder.productImage); 

Finally, you need to add the support package for PercentFrameLayout to your dependencies in build.gradle(Module:app)

 compile 'com.android.support:percent:23.1.1' 
0
source share

All Articles