diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index fc5b2b28b8a..2462978d668 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -1561,28 +1561,26 @@ public abstract interface class com/facebook/react/bridge/queue/MessageQueueThre public abstract fun assertIsOnThread ()V public abstract fun assertIsOnThread (Ljava/lang/String;)V public abstract fun callOnQueue (Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; - public abstract fun getPerfStats ()Lcom/facebook/react/bridge/queue/MessageQueueThreadPerfStats; + public fun getPerfStats ()Lcom/facebook/react/bridge/queue/MessageQueueThreadPerfStats; public abstract fun isIdle ()Z public abstract fun isOnThread ()Z public abstract fun quitSynchronous ()V - public abstract fun resetPerfStats ()V + public fun resetPerfStats ()V public abstract fun runOnQueue (Ljava/lang/Runnable;)Z } public final class com/facebook/react/bridge/queue/MessageQueueThreadImpl : com/facebook/react/bridge/queue/MessageQueueThread { public static final field Companion Lcom/facebook/react/bridge/queue/MessageQueueThreadImpl$Companion; - public synthetic fun (Ljava/lang/String;Landroid/os/Looper;Lcom/facebook/react/bridge/queue/QueueThreadExceptionHandler;Lcom/facebook/react/bridge/queue/MessageQueueThreadPerfStats;Lkotlin/jvm/internal/DefaultConstructorMarker;)V + public synthetic fun (Ljava/lang/String;Landroid/os/Looper;Lcom/facebook/react/bridge/queue/QueueThreadExceptionHandler;Lkotlin/jvm/internal/DefaultConstructorMarker;)V public fun assertIsOnThread ()V public fun assertIsOnThread (Ljava/lang/String;)V public fun callOnQueue (Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future; public static final fun create (Lcom/facebook/react/bridge/queue/MessageQueueThreadSpec;Lcom/facebook/react/bridge/queue/QueueThreadExceptionHandler;)Lcom/facebook/react/bridge/queue/MessageQueueThreadImpl; public final fun getLooper ()Landroid/os/Looper; public final fun getName ()Ljava/lang/String; - public fun getPerfStats ()Lcom/facebook/react/bridge/queue/MessageQueueThreadPerfStats; public fun isIdle ()Z public fun isOnThread ()Z public fun quitSynchronous ()V - public fun resetPerfStats ()V public fun runOnQueue (Ljava/lang/Runnable;)Z } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index ffa72480ac9..7a0655081a8 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -108,14 +108,8 @@ public abstract class ReactContext extends ContextWrapper { mInteropModuleRegistry = new InteropModuleRegistry(); } - public void resetPerfStats() { - if (mNativeModulesMessageQueueThread != null) { - mNativeModulesMessageQueueThread.resetPerfStats(); - } - if (mJSMessageQueueThread != null) { - mJSMessageQueueThread.resetPerfStats(); - } - } + @Deprecated(since = "MessageQueueThread perf stats are no longer collected") + public void resetPerfStats() {} public void setJSExceptionHandler(@Nullable JSExceptionHandler jSExceptionHandler) { mJSExceptionHandler = jSExceptionHandler; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.kt index b2d7d937156..0597e1403f5 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThread.kt @@ -55,13 +55,16 @@ public interface MessageQueueThread { * Returns the perf counters taken when the framework was started. This method is intended to be * used for instrumentation purposes. */ - public fun getPerfStats(): MessageQueueThreadPerfStats? + @Deprecated("MessageQueueThread perf stats are no longer collected") + @Suppress("DEPRECATION") + public fun getPerfStats(): MessageQueueThreadPerfStats? = null /** * Resets the perf counters. This is useful if the RN threads are being re-used. This method is * intended to be used for instrumentation purposes. */ - public fun resetPerfStats() + @Deprecated("MessageQueueThread perf stats are no longer collected") + public fun resetPerfStats(): Unit = Unit /** * Resets the perf counters. This is useful if the RN threads are being re-used. This method is diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.kt index 79cabea3864..ab0a0edc01f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadImpl.kt @@ -9,8 +9,6 @@ package com.facebook.react.bridge.queue import android.os.Looper import android.os.Process -import android.os.SystemClock -import android.util.Pair import com.facebook.common.logging.FLog import com.facebook.proguard.annotations.DoNotStripAny import com.facebook.react.bridge.AssertionException @@ -29,7 +27,6 @@ private constructor( public val name: String, public val looper: Looper, exceptionHandler: QueueThreadExceptionHandler, - private val stats: MessageQueueThreadPerfStats? = null ) : MessageQueueThread { private val handler = MessageQueueThreadHandler(looper, exceptionHandler) private val assertionErrorMessage = "Expected to be called from the '$name' thread!" @@ -105,27 +102,9 @@ private constructor( } } - override fun getPerfStats(): MessageQueueThreadPerfStats? = stats - - override fun resetPerfStats() { - assignToPerfStats(stats, -1, -1) - runOnQueue { - val wallTime = SystemClock.uptimeMillis() - val cpuTime = SystemClock.currentThreadTimeMillis() - assignToPerfStats(stats, wallTime, cpuTime) - } - } - public override fun isIdle(): Boolean = looper.queue.isIdle public companion object { - private fun assignToPerfStats(stats: MessageQueueThreadPerfStats?, wall: Long, cpu: Long) { - stats?.let { s -> - s.wallTime = wall - s.cpuTime = cpu - } - } - @JvmStatic @Throws(RuntimeException::class) public fun create( @@ -160,27 +139,23 @@ private constructor( stackSize: Long, exceptionHandler: QueueThreadExceptionHandler ): MessageQueueThreadImpl { - val dataFuture = SimpleSettableFuture>() + val looperFuture = SimpleSettableFuture() val bgThread = Thread( null, { Process.setThreadPriority(Process.THREAD_PRIORITY_DISPLAY) Looper.prepare() - val stats = MessageQueueThreadPerfStats() - val wallTime = SystemClock.uptimeMillis() - val cpuTime = SystemClock.currentThreadTimeMillis() - assignToPerfStats(stats, wallTime, cpuTime) - dataFuture.set(Pair(Looper.myLooper(), stats)) + looperFuture.set(Looper.myLooper()) Looper.loop() }, "mqt_$name", stackSize) bgThread.start() - val pair = dataFuture.getOrThrow() - val looper = pair?.first ?: throw RuntimeException("Looper not found for thread") - return MessageQueueThreadImpl(name, looper, exceptionHandler, pair.second) + val looper = + looperFuture.getOrThrow() ?: throw RuntimeException("Looper not found for thread") + return MessageQueueThreadImpl(name, looper, exceptionHandler) } } } diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadPerfStats.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadPerfStats.kt index b56c3718a41..96c3437f566 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadPerfStats.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadPerfStats.kt @@ -8,6 +8,7 @@ package com.facebook.react.bridge.queue /** This class holds perf counters' values at the beginning of an RN startup. */ +@Deprecated("MessageQueueThread perf stats are no longer collected") public class MessageQueueThreadPerfStats { @JvmField public var wallTime: Long = 0 @JvmField public var cpuTime: Long = 0 diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.kt b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.kt index 6186f1c8e30..1bf72565d36 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.kt +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/queue/MessageQueueThreadSpec.kt @@ -26,6 +26,7 @@ private constructor( public const val DEFAULT_STACK_SIZE_BYTES: Long = 0 @JvmStatic + @Deprecated("Use newBackgroundThreadSpec") public fun newUIBackgroundTreadSpec(name: String): MessageQueueThreadSpec = MessageQueueThreadSpec(ThreadType.NEW_BACKGROUND, name)