使用picasso加载图片会调不执行的问题定位

现象:

1.使用picasso的public void into(Target target);加载图片,第一次加载时,回调不执行。

2.第二次加载时,回调可以执行。


定位过程:

1.打开picasso日志,发现第一次时,图片已经从网络下载了。

2.单步源码,发现在加载完成后,target为null


使用picasso加载图片会调不执行的问题定位_第1张图片

3.进一步阅读源代码,发现target为WeakReference对象


结论:

第一次加载是从网络加载,异步,target对象被回收,故回调不执行。

第二次是从picasso的cache里获取,同步,target不会被回收,回调可以执行。

在调用的地方,持有target对象,就可以解决第一次回调不执行的问题。

你可能感兴趣的:(使用picasso加载图片会调不执行的问题定位)