From 32888a8b4a9d75b9d3f6cc4578ce6a6ccd932407 Mon Sep 17 00:00:00 2001 From: David Vacca Date: Sun, 7 Jun 2020 00:40:17 -0700 Subject: [PATCH] Disable state list animator during measurements of ReactSlider Summary: This diff disables the state list animator from the ReactSlider object used to measure ReactSlider. The motivation is to fix T63030542, which it seems to be caused by the state list animator being accessed and modified from different threads We don't have a way to reproduce, but based on my analysis this diff will fix T63030542. I would like to land this diff and then keep tracking production data for the crash reported on T63030542 Changelog: [Android][Fixed] Fix intermittent crash of ReactSlider on Android Reviewed By: fkgozali Differential Revision: D21920698 fbshipit-source-id: 54af388043d5041c4bf981c81364780d3f52d818 --- .../com/facebook/react/views/slider/ReactSliderManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java index 1cc148fe0d2..ff5da0ccb69 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/slider/ReactSliderManager.java @@ -73,6 +73,10 @@ public class ReactSliderManager extends SimpleViewManager YogaMeasureMode heightMode) { if (!mMeasured) { SeekBar reactSlider = new ReactSlider(getThemedContext(), null, STYLE); + // reactSlider is used for measurements purposes, it is not necessary to set a + // StateListAnimator. + // It is not safe to access StateListAnimator from a background thread. + reactSlider.setStateListAnimator(null); final int spec = View.MeasureSpec.makeMeasureSpec( ViewGroup.LayoutParams.WRAP_CONTENT, View.MeasureSpec.UNSPECIFIED);