public class UIViewOperationQueue
extends java.lang.Object
NativeViewHierarchyManager
or on
AnimationRegistry
. It expose similar methods as mentioned classes but instead of
executing commands immediately it enqueues those operations in a queue that is then flushed from
UIManagerModule
once JS batch of ui operations is finished. This is to make sure that we
execute all the JS operation coming from a single batch a single loop of the main (UI) android
looper.
TODO(7135923): Pooling of operation objects
TODO(5694019): Consider a better data structure for operations queue to save on allocationsModifier and Type | Class and Description |
---|---|
static interface |
UIViewOperationQueue.UIOperation
A mutation or animation operation on the view hierarchy.
|
Constructor and Description |
---|
UIViewOperationQueue(ReactApplicationContext reactContext,
NativeViewHierarchyManager nativeViewHierarchyManager) |
Modifier and Type | Method and Description |
---|---|
void |
addRootView(int tag,
SizeMonitoringFrameLayout rootView,
ThemedReactContext themedRootContext) |
void |
enqueueAddAnimation(int reactTag,
int animationID,
Callback onSuccess) |
void |
enqueueClearJSResponder() |
void |
enqueueConfigureLayoutAnimation(ReadableMap config,
Callback onSuccess,
Callback onError) |
void |
enqueueCreateView(ThemedReactContext themedContext,
int viewReactTag,
java.lang.String viewClassName,
ReactStylesDiffMap initialProps) |
void |
enqueueDispatchCommand(int reactTag,
int commandId,
ReadableArray commandArgs) |
void |
enqueueFindTargetForTouch(int reactTag,
float targetX,
float targetY,
Callback callback) |
void |
enqueueManageChildren(int reactTag,
int[] indicesToRemove,
com.facebook.react.uimanager.ViewAtIndex[] viewsToAdd,
int[] tagsToDelete) |
void |
enqueueMeasure(int reactTag,
Callback callback) |
void |
enqueueMeasureInWindow(int reactTag,
Callback callback) |
void |
enqueueRegisterAnimation(Animation animation) |
void |
enqueueRemoveAnimation(int animationID) |
void |
enqueueRemoveRootView(int rootViewTag) |
void |
enqueueSendAccessibilityEvent(int tag,
int eventType) |
void |
enqueueSetChildren(int reactTag,
ReadableArray childrenTags) |
void |
enqueueSetJSResponder(int tag,
int initialTag,
boolean blockNativeResponder) |
void |
enqueueSetLayoutAnimationEnabled(boolean enabled) |
void |
enqueueShowPopupMenu(int reactTag,
ReadableArray items,
Callback error,
Callback success) |
void |
enqueueUIBlock(UIBlock block) |
protected void |
enqueueUIOperation(UIViewOperationQueue.UIOperation operation)
Enqueues a UIOperation to be executed in UI thread.
|
void |
enqueueUpdateExtraData(int reactTag,
java.lang.Object extraData) |
void |
enqueueUpdateLayout(int parentTag,
int reactTag,
int x,
int y,
int width,
int height) |
void |
enqueueUpdateProperties(int reactTag,
java.lang.String className,
ReactStylesDiffMap props) |
boolean |
isEmpty() |
void |
setViewHierarchyUpdateDebugListener(NotThreadSafeViewHierarchyUpdateDebugListener listener) |
public UIViewOperationQueue(ReactApplicationContext reactContext, NativeViewHierarchyManager nativeViewHierarchyManager)
public void setViewHierarchyUpdateDebugListener(@Nullable NotThreadSafeViewHierarchyUpdateDebugListener listener)
public boolean isEmpty()
public void addRootView(int tag, SizeMonitoringFrameLayout rootView, ThemedReactContext themedRootContext)
protected void enqueueUIOperation(UIViewOperationQueue.UIOperation operation)
public void enqueueRemoveRootView(int rootViewTag)
public void enqueueSetJSResponder(int tag, int initialTag, boolean blockNativeResponder)
public void enqueueClearJSResponder()
public void enqueueDispatchCommand(int reactTag, int commandId, ReadableArray commandArgs)
public void enqueueUpdateExtraData(int reactTag, java.lang.Object extraData)
public void enqueueShowPopupMenu(int reactTag, ReadableArray items, Callback error, Callback success)
public void enqueueCreateView(ThemedReactContext themedContext, int viewReactTag, java.lang.String viewClassName, @Nullable ReactStylesDiffMap initialProps)
public void enqueueUpdateProperties(int reactTag, java.lang.String className, ReactStylesDiffMap props)
public void enqueueUpdateLayout(int parentTag, int reactTag, int x, int y, int width, int height)
public void enqueueManageChildren(int reactTag, @Nullable int[] indicesToRemove, @Nullable com.facebook.react.uimanager.ViewAtIndex[] viewsToAdd, @Nullable int[] tagsToDelete)
public void enqueueSetChildren(int reactTag, ReadableArray childrenTags)
public void enqueueRegisterAnimation(Animation animation)
public void enqueueAddAnimation(int reactTag, int animationID, Callback onSuccess)
public void enqueueRemoveAnimation(int animationID)
public void enqueueSetLayoutAnimationEnabled(boolean enabled)
public void enqueueConfigureLayoutAnimation(ReadableMap config, Callback onSuccess, Callback onError)
public void enqueueMeasure(int reactTag, Callback callback)
public void enqueueMeasureInWindow(int reactTag, Callback callback)
public void enqueueFindTargetForTouch(int reactTag, float targetX, float targetY, Callback callback)
public void enqueueSendAccessibilityEvent(int tag, int eventType)
public void enqueueUIBlock(UIBlock block)