From ddf82ed7609e0cdc1ee49860639bde0407fef669 Mon Sep 17 00:00:00 2001 From: Abhijith Date: Mon, 31 Jan 2022 09:48:55 +0000 Subject: [PATCH] update library/src/main/java/com/bumptech/glide/request/SingleRequest.java. --- .../bumptech/glide/request/SingleRequest.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/bumptech/glide/request/SingleRequest.java b/library/src/main/java/com/bumptech/glide/request/SingleRequest.java index fb8319796..fe9813446 100644 --- a/library/src/main/java/com/bumptech/glide/request/SingleRequest.java +++ b/library/src/main/java/com/bumptech/glide/request/SingleRequest.java @@ -7,14 +7,17 @@ import com.bumptech.glide.load.engine.Engine; import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.engine.Resource; import com.bumptech.glide.load.resource.drawable.DrawableDecoderCompat; +import com.bumptech.glide.request.target.ImageViewTarget; import com.bumptech.glide.request.target.SizeReadyCallback; import com.bumptech.glide.request.target.Target; +import com.bumptech.glide.request.target.ViewTarget; import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.TransitionFactory; import com.bumptech.glide.util.LogTime; import com.bumptech.glide.util.LogUtil; import com.bumptech.glide.util.Util; import com.bumptech.glide.util.pool.StateVerifier; +import ohos.agp.components.Component; import ohos.agp.components.element.Element; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -252,7 +255,7 @@ public final class SingleRequest implements Request, SizeReadyCallback, Resou if ((status == Status.RUNNING || status == Status.WAITING_FOR_SIZE) && canNotifyStatusChanged()) { - target.onLoadStarted(getPlaceholderDrawable()); + if(!checkLastTarget(target)) target.onLoadStarted(getPlaceholderDrawable()); } if (IS_VERBOSE_LOGGABLE) { logV("finished run method in " + LogTime.getElapsedMillis(startTime)); @@ -313,7 +316,7 @@ public final class SingleRequest implements Request, SizeReadyCallback, Resou resource = null; } if (canNotifyCleared()) { - target.onLoadCleared(getPlaceholderDrawable()); + if(!checkLastTarget(target)) target.onLoadCleared(getPlaceholderDrawable()); } status = Status.CLEARED; @@ -628,6 +631,9 @@ public final class SingleRequest implements Request, SizeReadyCallback, Resou if (!anyListenerHandledUpdatingTarget) { Transition animation = animationFactory.build(dataSource, isFirstResource); + if(target instanceof ViewTarget) { + ((ViewTarget)target).setLastModel(model); + } target.onResourceReady(result, animation); } } finally { @@ -752,4 +758,17 @@ public final class SingleRequest implements Request, SizeReadyCallback, Resou private void logV(String message) { LogUtil.info(TAG, message + " this: " + tag); } + + private boolean checkLastTarget(Target target){ + if(target instanceof ViewTarget){ + ViewTarget viewTarget =(ViewTarget) target; + Object model = viewTarget.getLastModel(); + if(model != null) { + if(model.equals(this.model)){ + return true; + } + } + } + return false; + } } -- Gitee