0

我使用ObjectAnimators将地图标记添加到屏幕后,我将它们制作成动画。动画用逐渐变大或变小的位图替换图标。大约20%的时间里,它会随机取消动画,只剩下部分放大或缩小。我知道它被取消是因为a)动画没有完成,b)如果我添加了AnimatorListener,那么在那些时候调用onAnimationCancel()为什么我的地图标记ObjectAnimators被取消?

它似乎并没有涉及垃圾收集,其他引脚(它可能发生在屏幕上只有一个引脚时),其他代码在动画正在进行时运行。

它们没有设置为autoCancel,即使它们是,它也不会被触发,因为没有启动多个相同的动画。

任何想法为什么会发生这种情况?有没有人看到动画被随机取消和意外?

回答

0

嗯,我觉得自己像一个白痴 - 我终于明白了为什么会发生这种事!

ObjectAnimators只对其目标对象具有弱引用。

如果您没有单独引用其他变量中正在进行动画的对象,则有时会在动画完成之前进行垃圾回收。 ObjectAnimator的下一次迭代将尝试更新对象,因目标对象为空而失败,然后它将取消动画。

那么,解决方案就是确保您有一个引用该对象的变量,至少在动画完成之前。

希望这会有所帮助 - 我确信我不能成为唯一遇到此问题的人!

相关问题