0

我使用ObjectAnimators將地圖標記添加到屏幕後,我將它們製作成動畫。動畫用逐漸變大或變小的位圖替換圖標。大約20%的時間裏,它會隨機取消動畫,只剩下部分放大或縮小。我知道它被取消是因爲a)動畫沒有完成,b)如果我添加了AnimatorListener,那麼在那些時候調用onAnimationCancel()爲什麼我的地圖標記ObjectAnimators被取消?

它似乎並沒有涉及垃圾收集,其他引腳(它可能發生在屏幕上只有一個引腳時),其他代碼在動畫正在進行時運行。

它們沒有設置爲autoCancel,即使它們是,它也不會被觸發,因爲沒有啓動多個相同的動畫。

任何想法爲什麼會發生這種情況?有沒有人看到動畫被隨機取消和意外?

回答

0

嗯,我覺得自己像一個白癡 - 我終於明白了爲什麼會發生這種事!

ObjectAnimators只對其目標對象具有弱引用。

如果您沒有單獨引用其他變量中正在進行動畫的對象,則有時會在動畫完成之前進行垃圾回收。 ObjectAnimator的下一次迭代將嘗試更新對象,因目標對象爲空而失敗,然後它將取消動畫。

那麼,解決方案就是確保您有一個引用該對象的變量,至少在動畫完成之前。

希望這會有所幫助 - 我確信我不能成爲唯一遇到此問題的人!

相關問題