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 fb831979604216e9116d5704fb2f6d1d64836b8b..fe981344604069340bb19720c1e9a0d9e41eb590 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; + } }