mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Document MountItemDispatcher (#41114)
Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/41114 changelog: [internal] MountItemDispatcher integrates with FabricUIManager in a non-obvious ways. This diff documents some of that. Reviewed By: NickGerleman Differential Revision: D50494929 fbshipit-source-id: ed3c1748765ca4590035be20f045ecfb14af86c2
This commit is contained in:
committed by
Facebook GitHub Bot
parent
e651a56ed9
commit
02397763f9
+5
@@ -1294,6 +1294,11 @@ public class FabricUIManager implements UIManager, LifecycleEventListener {
|
||||
}
|
||||
|
||||
try {
|
||||
// First, execute as many pre mount items as we can within frameTimeNanos time.
|
||||
// If not all pre mount items were executed, following may happen:
|
||||
// 1. In case there are view commands or mount items in MountItemDispatcher: execute
|
||||
// remaining pre mount items.
|
||||
// 2. In case there are no view commands or mount items, wait until next frame.
|
||||
mMountItemDispatcher.dispatchPreMountItems(frameTimeNanos);
|
||||
mMountItemDispatcher.tryDispatchMountItems();
|
||||
} catch (Exception ex) {
|
||||
|
||||
+15
-1
@@ -161,9 +161,17 @@ public class MountItemDispatcher {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes view commands, pre mount items and mount items in the respective order:
|
||||
* 1. View commands.
|
||||
* 2. Pre mount items.
|
||||
* 3. Regular mount items.
|
||||
*
|
||||
* Does nothing if `viewCommandMountItemsToDispatch` and `mountItemsToDispatch` are empty.
|
||||
* Nothing should call this directly except for `tryDispatchMountItems`.
|
||||
*/
|
||||
@UiThread
|
||||
@ThreadConfined(UI)
|
||||
/** Nothing should call this directly except for `tryDispatchMountItems`. */
|
||||
private boolean dispatchMountItems() {
|
||||
if (mReDispatchCounter == 0) {
|
||||
mBatchedExecutionTime = 0;
|
||||
@@ -296,6 +304,12 @@ public class MountItemDispatcher {
|
||||
return true;
|
||||
}
|
||||
|
||||
/*
|
||||
* Executes pre mount items. Pre mount items are operations that can be executed before the mount items come. For example view preallocation.
|
||||
* This is a performance optimisation to do as much work ahead of time as possible.
|
||||
*
|
||||
* `tryDispatchMountItems` will also execute pre mount items, but only if there are mount items to be executed.
|
||||
*/
|
||||
@UiThread
|
||||
@ThreadConfined(UI)
|
||||
public void dispatchPreMountItems(long frameTimeNanos) {
|
||||
|
||||
Reference in New Issue
Block a user