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.
android android-recyclerview android-glide
IZI_Shadow_IZI
source share