誰かがここでコメントを説明してくれますか:
ガベージ コレクションが発生する可能性があるため、Picasso を呼び出すときに Target の匿名クラスを作成しないでください。メンバー フィールドを強力な参照として保持し、GC されないようにする
ImageViewAction.javaの 30 行目で、その Callback は強い参照です。
ImageViewAction(Picasso picasso, ImageView imageView, Request data, boolean skipCache,
boolean noFade, int errorResId, Drawable errorDrawable, String key, Callback callback) {
super(picasso, imageView, data, skipCache, noFade, errorResId, errorDrawable, key);
this.callback = callback;
}
Callback が匿名クラスであると仮定すると、その親クラスへの参照が作成されるため、親も GC されるのを防ぐことができます。
Action.javaの 48 行目によると、ターゲット自体は WeakReference ですが、それはコールバックではありません。
Action(Picasso picasso, T target, Request data, boolean skipCache, boolean noFade,
int errorResId, Drawable errorDrawable, String key) {
this.picasso = picasso;
this.data = data;
this.target = new RequestWeakReference<T>(this, target, picasso.referenceQueue);
誰かが私が誤解していることを説明できますか?