RevealAnimator.mClipView утечка памяти при использовании в качестве анимации закрытия во фрагменте#onCreateAnimator

#android #android-fragments #memory-leaks #android-animation

#Android #android-фрагменты #утечки памяти #android-анимация

Вопрос:

Мой фрагмент открывается и закрывается анимацией раскрытия, что вызывает утечку памяти RevealAnimator.mClipView (обнаружено с помощью LeakCanary).

Я даже передал WeakReference представление вместо самого представления, но все еще происходит утечка памяти?

Это мой код:

 fun getExitAnimator(context: Context, viewReference: WeakReference<View>, revealAnimationSettings: RevealAnimationSettings): AnimatorSet? {
    return if (Utils.isLollipop()) {
        viewReference.get()?.let {
            val animDuration = context.resources.getInteger(android.R.integer.config_mediumAnimTime)

            val startRadius = hypot(it.width.toFloat(), it.height.toFloat())

            val circularRevealAnimation = ViewAnimationUtils.createCircularReveal(it, revealAnimationSettings.centerX, revealAnimationSettings.centerY, startRadius, 0.0f)
            circularRevealAnimation.apply {
                duration = animDuration.toLong()
                interpolator = FastOutSlowInInterpolator()
            }
            AnimatorSet().apply {
                playTogether(circularRevealAnimation, getColorAnimator(it, revealAnimationSettings.endColor, revealAnimationSettings.startColor, animDuration))
            }
        }
    } else null
}
  

И аниматор вызывается во фрагментах onCreateAnimator :

 override fun onCreateAnimator(transit: Int, enter: Boolean, nextAnim: Int): Animator? {
    return NewBookEntryFragmentArgs.fromBundle(requireArguments()).revealAnimationSettings?.let {
        AnimationUtils.getExitAnimator(requireContext(), WeakReference(requireView()), it)
    }?.takeIf { !enter }
}