diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java index b7b30b50b..9e05a3f62 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/FlatUIImplementation.java @@ -380,13 +380,20 @@ public class FlatUIImplementation extends UIImplementation { parentNode.addChildAt(childNode, index); } + @Override + protected void updateViewHierarchy(EventDispatcher eventDispatcher) { + mStateBuilder.beforeUpdateViewHierarchy(); + super.updateViewHierarchy(eventDispatcher); + mStateBuilder.afterUpdateViewHierarchy(eventDispatcher); + } + @Override protected void applyUpdatesRecursive( ReactShadowNode cssNode, float absoluteX, float absoluteY, EventDispatcher eventDispatcher) { - mStateBuilder.applyUpdates(eventDispatcher, (FlatRootShadowNode) cssNode); + mStateBuilder.applyUpdates((FlatRootShadowNode) cssNode); } @Override diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java index a3e74df7b..dbd5ef4b8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/StateBuilder.java @@ -61,13 +61,15 @@ import com.facebook.react.uimanager.events.EventDispatcher; return mOperationsQueue; } + void beforeUpdateViewHierarchy() { + commitViewUpdates(); + } + /** * Given a root of the laid-out shadow node hierarchy, walks the tree and generates an array of * DrawCommands that will then mount in UI thread to a root FlatViewGroup so that it can draw. */ - /* package */ void applyUpdates(EventDispatcher eventDispatcher, FlatShadowNode node) { - commitViewUpdates(); - + /* package */ void applyUpdates(FlatShadowNode node) { float width = node.getLayoutWidth(); float height = node.getLayoutHeight(); float left = node.getLayoutX(); @@ -87,7 +89,9 @@ import com.facebook.react.uimanager.events.EventDispatcher; Float.POSITIVE_INFINITY); updateViewBounds(node, left, top, right, bottom); + } + void afterUpdateViewHierarchy(EventDispatcher eventDispatcher) { if (mDetachAllChildrenFromViews != null) { int[] viewsToDetachAllChildrenFrom = collectViewTags(mViewsToDetachAllChildrenFrom); mViewsToDetachAllChildrenFrom.clear();