Używam adaptera wiążącego do ładowania obrazów w widoku recyklera. Obrazy wyglądają dobrze. Podczas szybkiego przewijania zauważyłem, że czasami otrzymuję komunikat "połączenie wyciekło" z Picassa.Adapter wiązania Picasso "połączenie miało wyciek" wiadomość
Problem pochodzi z linków martwego obrazu, kodowanie wszystkich moich adresów URL obrazu do punktu nigdzie nie powoduje błędu dla każdego obrazu po przewinięciu pierwszej pary z ekranu.
W/OkHttpClient: A connection to https://s3-eu-west-1.amazonaws.com/ was leaked. Did you forget to close a response body?
Kod jest w zasadzie identyczny: to this sample.
BindingUtils.kt
object BindingUtils {
@BindingAdapter("imageUrl")
@JvmStatic
fun setImageUrl(imageView: ImageView, url: String) {
Picasso.with(imageView.context).load(url).into(imageView)
}
xml
<ImageView
android:id="@+id/imageview_merchant_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary"
android:scaleType="centerCrop"
app:imageUrl="@{viewModel.background}"/>
Gradle
implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpLoggingVersion"
implementation "com.squareup.picasso:picasso:$rootProject.picassoVersion"
retrofitVersion = '2.3.0'
okhttpLoggingVersion = '3.6.0'
picassoVersion = '2.5.2'
widzę kilka odniesień do osób potrzebujących do zamknięcia połączenia dla standardowych wniosków Okhttp ale skoro tego Picassa Wywołanie obciążenia jest jedno liniowe, w jaki sposób może to być nieszczelne?
Może powinieneś anulować poprzedni wniosek, przed skontaktowaniem się nowe: Picasso.with (kontekst) .cancelRequest (ImageView); –