Do not remove new animators when previous animator is ended
PropertyAnimator removes the animator from the view tag when it ends. In rare cases, this was causing a previous animator to remove a newly set animator from the tags, instead of the completed animator. This occurred because the subsequent animation was triggered from the onAnimationEnd callback of a previous animator. This would cause the new animator to be set into the view's tags, before the other callback unset those tags. In this case, the KeyguardStatusView hide animation is being removed from the view tags. While that is running, KeyguardVisibilityHelper attempts and fails to cancel the hide animation when it determined the view should instead be shown. As a result, the view is hidden after the hide animation runs to it's conclusion. There are two races which have to occur in sequence for this this effect to be triggered. First the animation which hides the view must start before the previous animation removes itself from the tags. Next the KeyguardVisibilityHelper must attempt to show the view again before that hide animation completes, so that a cancellation is required. Neither of these races occur consistently. Bug: 290627350 Test: Manually checked issue reproduction Change-Id: I2c59d58914d6eb0460712dcd3d6dd3c771368453
Loading
Please register or sign in to comment