Tôi đang sử dụng bộ điều hợp ràng buộc để tải hình ảnh trong chế độ xem của người tái chế. Hình ảnh xuất hiện tốt. Trong khi di chuyển nhanh, tôi nhận thấy đôi khi tôi nhận được thông báo 'rò rỉ kết nối' từ Picasso.Bộ điều hợp liên kết Picasso 'một kết nối đã bị rò rỉ' message
Sự cố xuất phát từ liên kết hình ảnh chết, mã hóa tất cả các url hình ảnh của tôi thành điểm không sinh ra lỗi cho mỗi hình ảnh sau khi cuộn cặp đầu tiên ra khỏi màn hình.
W/OkHttpClient: A connection to https://s3-eu-west-1.amazonaws.com/ was leaked. Did you forget to close a response body?
Mã cơ bản giống hệt 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'
tôi có thể thấy một số tài liệu tham khảo cho người dân cần phải đóng các kết nối cho các yêu cầu tiêu chuẩn Okhttp nhưng nhìn thấy như Picasso tải cuộc gọi là một lớp lót làm thế nào điều này có thể bị rò rỉ?
Có lẽ bạn nên hủy bỏ yêu cầu trước đó, trước khi gọi mới: Picasso.with (context) .cancelRequest (IMAGExem); –