@@ -25,64 +25,82 @@ public class PerformanceModule extends ReactContextBaseJavaModule implements Tur
2525 private static final Queue <PerformanceEntry > markBuffer = new ConcurrentLinkedQueue <>();
2626 private static boolean didEmit = false ;
2727
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 ) -> {
72+ switch (name ) {
73+ case CONTENT_APPEARED :
74+ eventsBuffered = false ;
75+ emitNativeStartupTime ();
76+ emitBufferedMarks ();
77+ break ;
78+ case RELOAD :
79+ eventsBuffered = true ;
80+ break ;
81+ }
82+ };
83+
2884 public PerformanceModule (@ NonNull final ReactApplicationContext reactContext ) {
2985 super (reactContext );
3086 setupMarkerListener ();
3187 setupNativeMarkerListener ();
3288 }
3389
90+ private void setupMarkerListener () {
91+ ReactMarker .addListener (
92+ contentAppearedListener
93+ );
94+ }
95+
3496 private void setupNativeMarkerListener () {
3597 RNPerformance .getInstance ().addListener (this );
3698 }
3799
38100 // Need to set up the marker listener before the react module is initialized
39101 // to capture all events
40102 public static void setupListener () {
41- ReactMarker .addListener (
42- (name , tag , instanceKey ) -> {
43- switch (name ) {
44- case RELOAD :
45- clearMarkBuffer ();
46- addMark (new PerformanceMark (BRIDGE_SETUP_START , SystemClock .uptimeMillis ()));
47- break ;
48- case ATTACH_MEASURED_ROOT_VIEWS_END :
49- case ATTACH_MEASURED_ROOT_VIEWS_START :
50- case BUILD_NATIVE_MODULE_REGISTRY_END :
51- case BUILD_NATIVE_MODULE_REGISTRY_START :
52- case CONTENT_APPEARED :
53- case CREATE_CATALYST_INSTANCE_END :
54- case CREATE_CATALYST_INSTANCE_START :
55- case CREATE_REACT_CONTEXT_END :
56- case CREATE_REACT_CONTEXT_START :
57- case CREATE_UI_MANAGER_MODULE_CONSTANTS_END :
58- case CREATE_UI_MANAGER_MODULE_CONSTANTS_START :
59- case CREATE_UI_MANAGER_MODULE_END :
60- case CREATE_UI_MANAGER_MODULE_START :
61- case CREATE_VIEW_MANAGERS_END :
62- case CREATE_VIEW_MANAGERS_START :
63- case DOWNLOAD_END :
64- case DOWNLOAD_START :
65- case LOAD_REACT_NATIVE_SO_FILE_END :
66- case LOAD_REACT_NATIVE_SO_FILE_START :
67- case PRE_RUN_JS_BUNDLE_START :
68- case PRE_SETUP_REACT_CONTEXT_END :
69- case PRE_SETUP_REACT_CONTEXT_START :
70- case PROCESS_CORE_REACT_PACKAGE_END :
71- case PROCESS_CORE_REACT_PACKAGE_START :
72- case REACT_CONTEXT_THREAD_END :
73- case REACT_CONTEXT_THREAD_START :
74- case RUN_JS_BUNDLE_END :
75- case RUN_JS_BUNDLE_START :
76- case SETUP_REACT_CONTEXT_END :
77- case SETUP_REACT_CONTEXT_START :
78- case VM_INIT :
79- long startTime = SystemClock .uptimeMillis ();
80- addMark (new PerformanceMark (getMarkName (name ), startTime ));
81- break ;
82-
83- }
84- }
85- );
103+ ReactMarker .addListener (startupMarkerListener );
86104 }
87105
88106 private static void clearMarkBuffer () {
@@ -123,23 +141,6 @@ private void emitNativeStartupTime() {
123141 safelyEmitMark (new PerformanceMark ("nativeLaunchEnd" , StartTimeProvider .getEndTime ()));
124142 }
125143
126- private void setupMarkerListener () {
127- ReactMarker .addListener (
128- (name , tag , instanceKey ) -> {
129- switch (name ) {
130- case CONTENT_APPEARED :
131- eventsBuffered = false ;
132- emitNativeStartupTime ();
133- emitBufferedMarks ();
134- break ;
135- case RELOAD :
136- eventsBuffered = true ;
137- break ;
138- }
139- }
140- );
141- }
142-
143144 private void safelyEmitMark (PerformanceEntry entry ) {
144145 if (eventsBuffered ) {
145146 addMark (entry );
@@ -217,13 +218,18 @@ public void logMarker(PerformanceEntry entry) {
217218 }
218219
219220 @ Override
220- public void onCatalystInstanceDestroy () {
221- super .onCatalystInstanceDestroy ();
221+ public void invalidate () {
222+ super .invalidate ();
222223 RNPerformance .getInstance ().removeListener (this );
224+ ReactMarker .removeListener (contentAppearedListener );
223225 }
224226
225227 // Fix new arch runtime error
226228 public void addListener (String eventName ) {
227229
228230 }
231+
232+ public void removeListeners (double count ) {
233+
234+ }
229235}
0 commit comments