diff --git a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java index 0010116c606..c2924d31025 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java +++ b/ReactAndroid/src/main/java/com/facebook/react/config/ReactFeatureFlags.java @@ -109,4 +109,7 @@ public class ReactFeatureFlags { * JNI. */ public static boolean enableLargeTextMeasureCache = true; + + /** TODO: T113245006 Delete this flag. Enables caching of spannables for text */ + public static boolean enableSpannableCache = false; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java index ecf50f5df77..5c3ec6644d5 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java @@ -31,6 +31,7 @@ import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableNativeMap; import com.facebook.react.bridge.WritableArray; import com.facebook.react.common.build.ReactBuildConfig; +import com.facebook.react.config.ReactFeatureFlags; import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.ReactAccessibilityDelegate; import com.facebook.react.uimanager.ReactStylesDiffMap; @@ -197,19 +198,25 @@ public class TextLayoutManager { Spannable preparedSpannableText; - synchronized (sSpannableCacheLock) { - preparedSpannableText = sSpannableCache.get((ReadableNativeMap) attributedString); - if (preparedSpannableText != null) { - return preparedSpannableText; + if (ReactFeatureFlags.enableSpannableCache) { + synchronized (sSpannableCacheLock) { + preparedSpannableText = sSpannableCache.get((ReadableNativeMap) attributedString); + if (preparedSpannableText != null) { + return preparedSpannableText; + } } - } - preparedSpannableText = - createSpannableFromAttributedString( - context, attributedString, reactTextViewManagerCallback); + preparedSpannableText = + createSpannableFromAttributedString( + context, attributedString, reactTextViewManagerCallback); - synchronized (sSpannableCacheLock) { - sSpannableCache.put((ReadableNativeMap) attributedString, preparedSpannableText); + synchronized (sSpannableCacheLock) { + sSpannableCache.put((ReadableNativeMap) attributedString, preparedSpannableText); + } + } else { + preparedSpannableText = + createSpannableFromAttributedString( + context, attributedString, reactTextViewManagerCallback); } return preparedSpannableText;