问题描述
我在Android应用程序中使用Picasso库加载图像。当图像成功加载时,我需要得到通知,所以我使用:
Picasso.get().load(imageURL).into(imageView,new Callback() {
@Override
public void onSuccess() {
// do sth
}
@Override
public void onError(Exception e) {
}
});
如毕加索库文档The Callback param is a strong reference and will prevent your Activity or Fragment from being garbage collected.
所述,由于这个原因,我的应用程序使用的内存在替换了许多片段之后都增长了很多,所有片段都使用了回调。
如何摆脱回调并允许在运行onSuccess
方法之后对碎片进行垃圾回收?
解决方法
使用毕加索时添加标签:
Picasso.get().load("imageURL").tag("custom_tag").into(imageView,new Callback() {
@Override
public void onSuccess() {
// do sth
}
@Override
public void onError(Exception e) {
}
});
然后在替换/删除片段或退出活动之前,请调用以下命令取消任务:
Picasso.get().cancelTag("custom_tag");
请注意,callback
将在调用onSuccess()
之后自动删除。因此,当尚未完成回调时,提供的解决方案很有用。