公司有个需求需要在recycleview适配器中做网络请求。获取图片数据但是在循环网络请求的时候的时候报了这个错误
A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'response.body().close()' not called
我知道这是内存泄漏,或者没有写close的问题。于是根据报错日志加了response.body().close()但是好像没用还是报这个错误。有大神知道这是什么原因吗?
我的网络请求代码如下请问如何修复才能避免上面这个报错呢?
Request request = new Request.Builder()
.url(AppConst.innerIp + "/api/UserInfo/" + userId + "/GetAvatar")
.build();
Log.e("TAG", "onBindViewHolder: " + "位置" + position + "ID" + request);
MyApplication.getOkHttpClient().newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
if (response.code() == 200) {
byte[] imge = response.body().bytes();
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
//显示图片
RequestOptions options = new RequestOptions()
.placeholder(R.drawable.head_pic_background)
.error(R.drawable.load_fail)
.disallowHardwareConfig()
.diskCacheStrategy(DiskCacheStrategy.ALL);
Glide.with(mActivity)
.load(imge)//使用自己加载的方式替代glide下载的方式实现图片显示。
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
ToastUtils.showLong("加载失败 errorMsg:" + (e != null ? e.getMessage() : "null"));
return false;
}
@Override
public boolean onResourceReady(final Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
com.mabeijianxi.smallvideorecord2.Log.d("Wain", "成功 Drawable Name:" + resource.getClass().getCanonicalName());
return false;
}
})
.apply(options)
.into(viewHolder.userPic);
}
});