@@ -24,7 +24,51 @@ public class PerformanceModule extends ReactContextBaseJavaModule implements Tur
2424 private static boolean eventsBuffered = true ;
2525 private static final Queue <PerformanceEntry > markBuffer = new ConcurrentLinkedQueue <>();
2626 private static boolean didEmit = false ;
27- private final ReactMarker .MarkerListener markerListener = (name , tag , instanceKey ) -> {
27+
28+ private static final ReactMarker .MarkerListener startupMarkerListener = (name , tag , instanceKey ) -> {
29+ switch (name ) {
30+ case RELOAD :
31+ clearMarkBuffer ();
32+ addMark (new PerformanceMark (BRIDGE_SETUP_START , SystemClock .uptimeMillis ()));
33+ break ;
34+ case ATTACH_MEASURED_ROOT_VIEWS_END :
35+ case ATTACH_MEASURED_ROOT_VIEWS_START :
36+ case BUILD_NATIVE_MODULE_REGISTRY_END :
37+ case BUILD_NATIVE_MODULE_REGISTRY_START :
38+ case CONTENT_APPEARED :
39+ case CREATE_CATALYST_INSTANCE_END :
40+ case CREATE_CATALYST_INSTANCE_START :
41+ case CREATE_REACT_CONTEXT_END :
42+ case CREATE_REACT_CONTEXT_START :
43+ case CREATE_UI_MANAGER_MODULE_CONSTANTS_END :
44+ case CREATE_UI_MANAGER_MODULE_CONSTANTS_START :
45+ case CREATE_UI_MANAGER_MODULE_END :
46+ case CREATE_UI_MANAGER_MODULE_START :
47+ case CREATE_VIEW_MANAGERS_END :
48+ case CREATE_VIEW_MANAGERS_START :
49+ case DOWNLOAD_END :
50+ case DOWNLOAD_START :
51+ case LOAD_REACT_NATIVE_SO_FILE_END :
52+ case LOAD_REACT_NATIVE_SO_FILE_START :
53+ case PRE_RUN_JS_BUNDLE_START :
54+ case PRE_SETUP_REACT_CONTEXT_END :
55+ case PRE_SETUP_REACT_CONTEXT_START :
56+ case PROCESS_CORE_REACT_PACKAGE_END :
57+ case PROCESS_CORE_REACT_PACKAGE_START :
58+ case REACT_CONTEXT_THREAD_END :
59+ case REACT_CONTEXT_THREAD_START :
60+ case RUN_JS_BUNDLE_END :
61+ case RUN_JS_BUNDLE_START :
62+ case SETUP_REACT_CONTEXT_END :
63+ case SETUP_REACT_CONTEXT_START :
64+ case VM_INIT :
65+ long startTime = SystemClock .uptimeMillis ();
66+ addMark (new PerformanceMark (getMarkName (name ), startTime ));
67+ break ;
68+ }
69+ };
70+
71+ private final ReactMarker .MarkerListener contentAppearedListener = (name , tag , instanceKey ) -> {
2872 switch (name ) {
2973 case CONTENT_APPEARED :
3074 eventsBuffered = false ;
@@ -43,58 +87,26 @@ public PerformanceModule(@NonNull final ReactApplicationContext reactContext) {
4387 setupNativeMarkerListener ();
4488 }
4589
90+ private void setupMarkerListener () {
91+ ReactMarker .addListener (
92+ contentAppearedListener
93+ );
94+ }
95+
4696 private void setupNativeMarkerListener () {
4797 RNPerformance .getInstance ().addListener (this );
4898 }
4999
50100 // Need to set up the marker listener before the react module is initialized
51101 // to capture all events
52102 public static void setupListener () {
53- ReactMarker .addListener (
54- (name , tag , instanceKey ) -> {
55- switch (name ) {
56- case RELOAD :
57- clearMarkBuffer ();
58- addMark (new PerformanceMark (BRIDGE_SETUP_START , SystemClock .uptimeMillis ()));
59- break ;
60- case ATTACH_MEASURED_ROOT_VIEWS_END :
61- case ATTACH_MEASURED_ROOT_VIEWS_START :
62- case BUILD_NATIVE_MODULE_REGISTRY_END :
63- case BUILD_NATIVE_MODULE_REGISTRY_START :
64- case CONTENT_APPEARED :
65- case CREATE_CATALYST_INSTANCE_END :
66- case CREATE_CATALYST_INSTANCE_START :
67- case CREATE_REACT_CONTEXT_END :
68- case CREATE_REACT_CONTEXT_START :
69- case CREATE_UI_MANAGER_MODULE_CONSTANTS_END :
70- case CREATE_UI_MANAGER_MODULE_CONSTANTS_START :
71- case CREATE_UI_MANAGER_MODULE_END :
72- case CREATE_UI_MANAGER_MODULE_START :
73- case CREATE_VIEW_MANAGERS_END :
74- case CREATE_VIEW_MANAGERS_START :
75- case DOWNLOAD_END :
76- case DOWNLOAD_START :
77- case LOAD_REACT_NATIVE_SO_FILE_END :
78- case LOAD_REACT_NATIVE_SO_FILE_START :
79- case PRE_RUN_JS_BUNDLE_START :
80- case PRE_SETUP_REACT_CONTEXT_END :
81- case PRE_SETUP_REACT_CONTEXT_START :
82- case PROCESS_CORE_REACT_PACKAGE_END :
83- case PROCESS_CORE_REACT_PACKAGE_START :
84- case REACT_CONTEXT_THREAD_END :
85- case REACT_CONTEXT_THREAD_START :
86- case RUN_JS_BUNDLE_END :
87- case RUN_JS_BUNDLE_START :
88- case SETUP_REACT_CONTEXT_END :
89- case SETUP_REACT_CONTEXT_START :
90- case VM_INIT :
91- long startTime = SystemClock .uptimeMillis ();
92- addMark (new PerformanceMark (getMarkName (name ), startTime ));
93- break ;
94-
95- }
96- }
97- );
103+ ReactMarker .addListener (startupMarkerListener );
104+ }
105+
106+ public static void cleanup () {
107+ markBuffer .clear ();
108+ eventsBuffered = true ;
109+ didEmit = false ;
98110 }
99111
100112 private static void clearMarkBuffer () {
@@ -145,12 +157,6 @@ private void emitNativeStartupTime() {
145157 safelyEmitMark (new PerformanceMark ("nativeLaunchEnd" , StartTimeProvider .getEndTime ()));
146158 }
147159
148- private void setupMarkerListener () {
149- ReactMarker .addListener (
150- markerListener
151- );
152- }
153-
154160 private void safelyEmitMark (PerformanceEntry entry ) {
155161 if (eventsBuffered ) {
156162 addMark (entry );
@@ -229,6 +235,6 @@ public void logMarker(PerformanceEntry entry) {
229235 public void invalidate () {
230236 super .invalidate ();
231237 RNPerformance .getInstance ().removeListener (this );
232- ReactMarker .removeListener (markerListener );
238+ ReactMarker .removeListener (contentAppearedListener );
233239 }
234240}
0 commit comments