Я наблюдал очень долгое время загрузки изображений в нашем приложении с использованием Glide 3.6 + RecyclerView с использованием GridLayoutManager. Изображения все вокруг 20kb-40kb. Кажется, что glide ставит в очередь все запросы, из-за чего изображения загружаются довольно долго, как только вы начинаете прокручивать список дальше вниз. Я приложил журналы из класса GenericRequest.
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
Было интересно, может ли кто-нибудь дать некоторое представление о том, в чем может быть проблема. Может быть, это время, необходимое для изменения размера представления? Я использую match_parent
для ширины представления и фиксированной высоты около 200dp
.
Изображения загружаются с помощью
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"
/>
РЕДАКТИРОВАТЬ: Согласно комментарию @VladimirMironov. Я обновил увеличенный пул и очистил ожидающие загрузки при повторном использовании представления. Кажется, это немного помогло при быстрой прокрутке. Предоставляет ли переопределение или неиспользование «match_parent» для представления какие-либо преимущества, когда дело доходит до измерения представления? Есть еще случаи, когда представление не отображается почти 5 секунд.
RecyclerView.Adapter.onViewRecycled
(через вызовGlide.clear
) 2. Увеличить размер пулаViewHolder
s черезrecycler.getRecycledViewPool().setMaxRecycledViews(0, 2 * numColumns)
- person Vladimir Mironov   schedule 29.05.2015