繁体   English   中英

为什么我的地图标记ObjectAnimators被取消?

[英]Why are my map marker ObjectAnimators getting canceled?

使用ObjectAnimators将地图标记添加到屏幕后,我使用的应用程序会对地图标记进行动画处理。 动画将图标替换为逐渐变大或变小的位图。 大约20%的时间,它将随机取消动画,而只留下部分放大或缩小的动画。 我知道它会被取消,因为a)动画没有完成,b)如果我添加AnimatorListener ,那么在那个时候调用onAnimationCancel()

它似乎与垃圾回收,其他引脚(在屏幕上仅放置一个引脚时可能发生),动画进行过程中运行的其他代码无关。

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

知道为什么会这样吗? 有没有人看过动画被随机和意外取消?

好吧,我觉得自己是个白痴-我终于意识到了为什么会这样!

ObjectAnimator仅对其目标对象具有弱引用。

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

因此,解决方案只是确保您有一个引用该对象的变量,至少要等到动画完成为止。

希望这会有所帮助-我敢肯定我不会成为唯一遇到此问题的人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM