我正在使用带有Picasso
的自定义Picasso.Builder()
实例在适配器中提供自己的RequestHandler
,如下所示:
private Picasso mPicasso;
public Adapter(Context context) {
mContext = context;
mPicasso = new Picasso.Builder(mContext)
.addRequestHandler(new RequestHandler() {
...
})
.build();
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
mPicasso.load(...)
.fit()
.centerCrop()
.placeholder(...)
.noFade()
.into(holder.imageView);
}
但是每次活动重新创建(例如通过配置更改),
com.squareup.picasso.Dispatcher$NetworkBroadcastReceiver
内的实例都会泄漏,并且永远不会从内存中收集垃圾。下面是来自eclipse内存分析器的图表:
http://www.upsara.com/images/q93m_chart49.png
有什么建议吗?
最佳答案
我也有同样的问题。通过从回调方法调用shutdown修复了此问题:
mPicasso.load(...)
.fit()
.centerCrop()
.placeholder(...)
.noFade()
.into(holder.imageView, new Callback() {
@Override
public void onSuccess() {
mPicasso.shutdown();
}
@Override
public void onError() {
mPicasso.shutdown();
}
});