From 336539d8110b6029fc95f203fed0deea38dffcba Mon Sep 17 00:00:00 2001 From: igorv8836 Date: Fri, 24 Oct 2025 14:21:51 +0300 Subject: [PATCH] Fix memory leak in DivBaseBinder by properly removing the pre-draw listener from ViewTreeObserver on detach commit_hash:c21113506be24ae5c858d4aa8624e4e4c072bea3 --- .../com/yandex/div/core/view2/divs/DivBaseBinder.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/client/android/div/src/main/java/com/yandex/div/core/view2/divs/DivBaseBinder.kt b/client/android/div/src/main/java/com/yandex/div/core/view2/divs/DivBaseBinder.kt index 82b8767ed..e1357c15c 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/view2/divs/DivBaseBinder.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/view2/divs/DivBaseBinder.kt @@ -4,6 +4,8 @@ import android.graphics.drawable.Drawable import android.os.Build import android.util.DisplayMetrics import android.view.View +import androidx.core.view.doOnAttach +import androidx.core.view.doOnDetach import androidx.transition.Transition import androidx.transition.TransitionManager import androidx.transition.Visibility @@ -244,7 +246,13 @@ internal class DivBaseBinder @Inject constructor( true } divView.clearVariablesListener = clearVariablesListener - divView.viewTreeObserver.addOnPreDrawListener(clearVariablesListener) + + divView.apply { + doOnAttach { + viewTreeObserver.addOnPreDrawListener(clearVariablesListener) + doOnDetach { viewTreeObserver.removeOnPreDrawListener(clearVariablesListener) } + } + } } private fun updateSizeVariable(