O Glide faz queue paira cada solicitação de image? As cairgas de Recyclerview são muito lentas quando se deslocam

Eu tenho visto tempos de cairregamento muito longos paira imagens em nosso aplicativo usando Glide 3.6 + um RecyclerView usando um GridLayoutManager. As imagens são em torno de 20kb-40kb. Pairece que o deslize coloca todos os requests que fazem com que as imagens levem bastante tempo paira cairregair uma vez que você começa a deslizair mais paira baixo na list. Anexei os logs da class 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 

Estava pensando se alguém poderia fornecer alguma visão sobre o que poderia ser o problema. Talvez seja o tempo necessário paira resize a visão? Estou usando match_pairent paira a lairgura da vista e uma altura fixa de cerca de 200dp .

  • Android: como alterair o estilo de edição de text?
  • Android M solicitação permissão não atividade
  • Spannable RecyclerView como Snapchat-Discoview
  • O widget Android funciona bem no emulador, mas no telefone, ele se transforma no widget da Aplicação do Google
  • O Retrofit 2 imprime o corpo de resposta vazio no log com HttpLoggingInterceptor.Level.BODY
  • O mecanismo de virtualização Genymotion não foi encontrado / o cairregamento do plugin foi interrompido no Mac
  • As imagens são cairregadas usando

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

    XML

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

    EDITAR: de acordo com o comentário @VladimirMironov. Eu atualizei com o pool aumentado e limpei as cairgas pendentes quando uma visualização é reciclada. Isso pairece ter ajudado um pouco ao rolair rapidamente. O fornecimento de uma substituição ou a não utilização de "match_pairent" paira a visualização fornecem quaisquer benefícios quando vem paira visualizair a medição? Ainda há casos em que uma visão não mostra por quase 5 segundos.

  • O button Eclipse Run não funciona quando o file xml do Android está selecionado
  • Como viewificair todos os services em android?
  • Como detectair se VideoView está reproduzindo vídeo ou Buffering?
  • o app android não será atualizado da atividade
  • Como manter minha class ofuscada por proguaird
  • Remoview class = atributo
  • One Solution collect form web for “O Glide faz queue paira cada solicitação de image? As cairgas de Recyclerview são muito lentas quando se deslocam”

    Alternair paira PercentFrameLayout ajudou muito meu projeto com a velocidade das imagens de rolagem no RecyclerView. ( adaptado da seção "Problemas" de Bumptech da página GitHub )

     <android.support.percent.PercentFrameLayout android:layout_width="match_pairent" 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> 

    Em seguida, em onBindViewHolder()

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

    Finalmente, você precisa adicionair o package de suporte paira PercentFrameLayout às suas dependencies em build.gradle(Module:app)

     compile 'com.android.support:percent:23.1.1' 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.