Skip to content

Commit 4f886a2

Browse files
Dmitry Zakharovfacebook-github-bot
Dmitry Zakharov
authored andcommitted
Remove android_react_native_perf.use_separate_ui_bg_thread experiment.
Reviewed By: AaaChiuuu Differential Revision: D6313250 fbshipit-source-id: 583a729a157a2053827631a43e38917753e78477
1 parent 0537763 commit 4f886a2

14 files changed

+16
-151
lines changed

ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java

+1-15
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,6 @@ public interface ReactInstanceEventListener {
156156
private final @Nullable NativeModuleCallExceptionHandler mNativeModuleCallExceptionHandler;
157157
private final boolean mLazyNativeModulesEnabled;
158158
private final boolean mDelayViewManagerClassLoadsEnabled;
159-
private final boolean mUseSeparateUIBackgroundThread;
160159
private final int mMinNumShakes;
161160

162161
private class ReactContextInitParams {
@@ -204,7 +203,6 @@ public static ReactInstanceManagerBuilder builder() {
204203
boolean lazyViewManagersEnabled,
205204
boolean delayViewManagerClassLoadsEnabled,
206205
@Nullable DevBundleDownloadListener devBundleDownloadListener,
207-
boolean useSeparateUIBackgroundThread,
208206
int minNumShakes,
209207
int minTimeLeftInFrameForNonBatchedOperationMs) {
210208
Log.d(ReactConstants.TAG, "ReactInstanceManager.ctor()");
@@ -236,7 +234,6 @@ public static ReactInstanceManagerBuilder builder() {
236234
mNativeModuleCallExceptionHandler = nativeModuleCallExceptionHandler;
237235
mLazyNativeModulesEnabled = lazyNativeModulesEnabled;
238236
mDelayViewManagerClassLoadsEnabled = delayViewManagerClassLoadsEnabled;
239-
mUseSeparateUIBackgroundThread = useSeparateUIBackgroundThread;
240237
mMinNumShakes = minNumShakes;
241238
synchronized (mPackages) {
242239
PrinterHolder.getPrinter()
@@ -995,15 +992,6 @@ public void run() {
995992
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
996993
}
997994
});
998-
if (mUseSeparateUIBackgroundThread) {
999-
reactContext.runOnUiBackgroundQueueThread(
1000-
new Runnable() {
1001-
@Override
1002-
public void run() {
1003-
Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT);
1004-
}
1005-
});
1006-
}
1007995
}
1008996

1009997
private void attachRootViewToInstance(
@@ -1080,9 +1068,7 @@ private ReactApplicationContext createReactContext(
10801068
? mNativeModuleCallExceptionHandler
10811069
: mDevSupportManager;
10821070
CatalystInstanceImpl.Builder catalystInstanceBuilder = new CatalystInstanceImpl.Builder()
1083-
.setReactQueueConfigurationSpec(mUseSeparateUIBackgroundThread ?
1084-
ReactQueueConfigurationSpec.createWithSeparateUIBackgroundThread() :
1085-
ReactQueueConfigurationSpec.createDefault())
1071+
.setReactQueueConfigurationSpec(ReactQueueConfigurationSpec.createDefault())
10861072
.setJSExecutor(jsExecutor)
10871073
.setRegistry(nativeModuleRegistry)
10881074
.setJSBundleLoader(jsBundleLoader)

ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManagerBuilder.java

-8
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ public class ReactInstanceManagerBuilder {
4646
private boolean mDelayViewManagerClassLoadsEnabled;
4747
private @Nullable DevBundleDownloadListener mDevBundleDownloadListener;
4848
private @Nullable JavaScriptExecutorFactory mJavaScriptExecutorFactory;
49-
private boolean mUseSeparateUIBackgroundThread;
5049
private int mMinNumShakes = 1;
5150
private int mMinTimeLeftInFrameForNonBatchedOperationMs = -1;
5251

@@ -214,12 +213,6 @@ public ReactInstanceManagerBuilder setDevBundleDownloadListener(
214213
return this;
215214
}
216215

217-
public ReactInstanceManagerBuilder setUseSeparateUIBackgroundThread(
218-
boolean useSeparateUIBackgroundThread) {
219-
mUseSeparateUIBackgroundThread = useSeparateUIBackgroundThread;
220-
return this;
221-
}
222-
223216
public ReactInstanceManagerBuilder setMinNumShakes(int minNumShakes) {
224217
mMinNumShakes = minNumShakes;
225218
return this;
@@ -286,7 +279,6 @@ public ReactInstanceManager build() {
286279
mLazyViewManagersEnabled,
287280
mDelayViewManagerClassLoadsEnabled,
288281
mDevBundleDownloadListener,
289-
mUseSeparateUIBackgroundThread,
290282
mMinNumShakes,
291283
mMinTimeLeftInFrameForNonBatchedOperationMs);
292284
}

ReactAndroid/src/main/java/com/facebook/react/ReactRootView.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ private void updateRootLayoutSpecs(final int widthMeasureSpec, final int heightM
330330
}
331331
final ReactContext reactApplicationContext = mReactInstanceManager.getCurrentReactContext();
332332
if (reactApplicationContext != null) {
333-
reactApplicationContext.runUIBackgroundRunnable(
333+
reactApplicationContext.runOnNativeModulesQueueThread(
334334
new GuardedRunnable(reactApplicationContext) {
335335
@Override
336336
public void runGuarded() {

ReactAndroid/src/main/java/com/facebook/react/bridge/CatalystInstanceImpl.java

-4
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ public String toString() {
8383
private final NativeModuleRegistry mNativeModuleRegistry;
8484
private final NativeModuleCallExceptionHandler mNativeModuleCallExceptionHandler;
8585
private final MessageQueueThread mNativeModulesQueueThread;
86-
private final @Nullable MessageQueueThread mUIBackgroundQueueThread;
8786
private boolean mInitialized = false;
8887
private volatile boolean mAcceptCalls = false;
8988

@@ -114,7 +113,6 @@ private CatalystInstanceImpl(
114113
mJSBundleLoader = jsBundleLoader;
115114
mNativeModuleCallExceptionHandler = nativeModuleCallExceptionHandler;
116115
mNativeModulesQueueThread = mReactQueueConfiguration.getNativeModulesQueueThread();
117-
mUIBackgroundQueueThread = mReactQueueConfiguration.getUIBackgroundQueueThread();
118116
mTraceListener = new JSProfilerTraceListener(this);
119117

120118
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge before initializeBridge");
@@ -123,7 +121,6 @@ private CatalystInstanceImpl(
123121
jsExecutor,
124122
mReactQueueConfiguration.getJSQueueThread(),
125123
mNativeModulesQueueThread,
126-
mUIBackgroundQueueThread,
127124
mNativeModuleRegistry.getJavaModules(this),
128125
mNativeModuleRegistry.getCxxModules());
129126
Log.d(ReactConstants.TAG, "Initializing React Xplat Bridge after initializeBridge");
@@ -191,7 +188,6 @@ private native void initializeBridge(
191188
JavaScriptExecutor jsExecutor,
192189
MessageQueueThread jsQueue,
193190
MessageQueueThread moduleQueue,
194-
MessageQueueThread uiBackgroundQueue,
195191
Collection<JavaModuleWrapper> javaModules,
196192
Collection<ModuleHolder> cxxModules);
197193

ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java

-30
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ public class ReactContext extends ContextWrapper {
4444
private @Nullable CatalystInstance mCatalystInstance;
4545
private @Nullable LayoutInflater mInflater;
4646
private @Nullable MessageQueueThread mUiMessageQueueThread;
47-
private @Nullable MessageQueueThread mUiBackgroundMessageQueueThread;
4847
private @Nullable MessageQueueThread mNativeModulesMessageQueueThread;
4948
private @Nullable MessageQueueThread mJSMessageQueueThread;
5049
private @Nullable NativeModuleCallExceptionHandler mNativeModuleCallExceptionHandler;
@@ -69,7 +68,6 @@ public void initializeWithInstance(CatalystInstance catalystInstance) {
6968

7069
ReactQueueConfiguration queueConfig = catalystInstance.getReactQueueConfiguration();
7170
mUiMessageQueueThread = queueConfig.getUIQueueThread();
72-
mUiBackgroundMessageQueueThread = queueConfig.getUIBackgroundQueueThread();
7371
mNativeModulesMessageQueueThread = queueConfig.getNativeModulesQueueThread();
7472
mJSMessageQueueThread = queueConfig.getJSQueueThread();
7573
}
@@ -269,14 +267,6 @@ public void runOnUiQueueThread(Runnable runnable) {
269267
Assertions.assertNotNull(mUiMessageQueueThread).runOnQueue(runnable);
270268
}
271269

272-
public void assertOnUiBackgroundQueueThread() {
273-
Assertions.assertNotNull(mUiBackgroundMessageQueueThread).assertIsOnThread();
274-
}
275-
276-
public void runOnUiBackgroundQueueThread(Runnable runnable) {
277-
Assertions.assertNotNull(mUiBackgroundMessageQueueThread).runOnQueue(runnable);
278-
}
279-
280270
public void assertOnNativeModulesQueueThread() {
281271
Assertions.assertNotNull(mNativeModulesMessageQueueThread).assertIsOnThread();
282272
}
@@ -305,26 +295,6 @@ public void runOnJSQueueThread(Runnable runnable) {
305295
Assertions.assertNotNull(mJSMessageQueueThread).runOnQueue(runnable);
306296
}
307297

308-
public boolean hasUIBackgroundRunnableThread() {
309-
return mUiBackgroundMessageQueueThread != null;
310-
}
311-
312-
public void assertOnUIBackgroundOrNativeModulesThread() {
313-
if (mUiBackgroundMessageQueueThread == null) {
314-
assertOnNativeModulesQueueThread();
315-
} else {
316-
assertOnUiBackgroundQueueThread();
317-
}
318-
}
319-
320-
public void runUIBackgroundRunnable(Runnable runnable) {
321-
if (mUiBackgroundMessageQueueThread == null) {
322-
runOnNativeModulesQueueThread(runnable);
323-
} else {
324-
runOnUiBackgroundQueueThread(runnable);
325-
}
326-
}
327-
328298
/**
329299
* Passes the given exception to the current
330300
* {@link com.facebook.react.bridge.NativeModuleCallExceptionHandler} if one exists, rethrowing

ReactAndroid/src/main/java/com/facebook/react/bridge/queue/ReactQueueConfiguration.java

-3
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
package com.facebook.react.bridge.queue;
1111

12-
import javax.annotation.Nullable;
1312

1413
/**
1514
* Specifies which {@link MessageQueueThread}s must be used to run the various contexts of
@@ -22,8 +21,6 @@
2221
*/
2322
public interface ReactQueueConfiguration {
2423
MessageQueueThread getUIQueueThread();
25-
@Nullable
26-
MessageQueueThread getUIBackgroundQueueThread();
2724
MessageQueueThread getNativeModulesQueueThread();
2825
MessageQueueThread getJSQueueThread();
2926
void destroy();

ReactAndroid/src/main/java/com/facebook/react/bridge/queue/ReactQueueConfigurationImpl.java

+3-25
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@
99

1010
package com.facebook.react.bridge.queue;
1111

12-
import javax.annotation.Nullable;
13-
1412
import java.util.Map;
1513

1614
import android.os.Looper;
@@ -20,17 +18,14 @@
2018
public class ReactQueueConfigurationImpl implements ReactQueueConfiguration {
2119

2220
private final MessageQueueThreadImpl mUIQueueThread;
23-
private final @Nullable MessageQueueThreadImpl mUIBackgroundQueueThread;
2421
private final MessageQueueThreadImpl mNativeModulesQueueThread;
2522
private final MessageQueueThreadImpl mJSQueueThread;
2623

2724
private ReactQueueConfigurationImpl(
28-
MessageQueueThreadImpl uiQueueThread,
29-
@Nullable MessageQueueThreadImpl uiBackgroundQueueThread,
30-
MessageQueueThreadImpl nativeModulesQueueThread,
31-
MessageQueueThreadImpl jsQueueThread) {
25+
MessageQueueThreadImpl uiQueueThread,
26+
MessageQueueThreadImpl nativeModulesQueueThread,
27+
MessageQueueThreadImpl jsQueueThread) {
3228
mUIQueueThread = uiQueueThread;
33-
mUIBackgroundQueueThread = uiBackgroundQueueThread;
3429
mNativeModulesQueueThread = nativeModulesQueueThread;
3530
mJSQueueThread = jsQueueThread;
3631
}
@@ -40,11 +35,6 @@ public MessageQueueThread getUIQueueThread() {
4035
return mUIQueueThread;
4136
}
4237

43-
@Override
44-
public @Nullable MessageQueueThread getUIBackgroundQueueThread() {
45-
return mUIBackgroundQueueThread;
46-
}
47-
4838
@Override
4939
public MessageQueueThread getNativeModulesQueueThread() {
5040
return mNativeModulesQueueThread;
@@ -60,10 +50,6 @@ public MessageQueueThread getJSQueueThread() {
6050
* is destroyed so that we shut down the proper queue threads.
6151
*/
6252
public void destroy() {
63-
if (mUIBackgroundQueueThread != null &&
64-
mUIBackgroundQueueThread.getLooper() != Looper.getMainLooper()) {
65-
mUIBackgroundQueueThread.quitSynchronous();
66-
}
6753
if (mNativeModulesQueueThread.getLooper() != Looper.getMainLooper()) {
6854
mNativeModulesQueueThread.quitSynchronous();
6955
}
@@ -94,16 +80,8 @@ public static ReactQueueConfigurationImpl create(
9480
MessageQueueThreadImpl.create(spec.getNativeModulesQueueThreadSpec(), exceptionHandler);
9581
}
9682

97-
MessageQueueThreadImpl uiBackgroundThread =
98-
specsToThreads.get(spec.getUIBackgroundQueueThreadSpec());
99-
if (uiBackgroundThread == null && spec.getUIBackgroundQueueThreadSpec() != null) {
100-
uiBackgroundThread =
101-
MessageQueueThreadImpl.create(spec.getUIBackgroundQueueThreadSpec(), exceptionHandler);
102-
}
103-
10483
return new ReactQueueConfigurationImpl(
10584
uiThread,
106-
uiBackgroundThread,
10785
nativeModulesThread,
10886
jsThread);
10987
}

ReactAndroid/src/main/java/com/facebook/react/bridge/queue/ReactQueueConfigurationSpec.java

-29
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,16 @@ public class ReactQueueConfigurationSpec {
2525

2626
private static final long LEGACY_STACK_SIZE_BYTES = 2000000;
2727

28-
private final @Nullable MessageQueueThreadSpec mUIBackgroundQueueThreadSpec;
2928
private final MessageQueueThreadSpec mNativeModulesQueueThreadSpec;
3029
private final MessageQueueThreadSpec mJSQueueThreadSpec;
3130

3231
private ReactQueueConfigurationSpec(
33-
@Nullable MessageQueueThreadSpec uiBackgroundQueueThreadSpec,
3432
MessageQueueThreadSpec nativeModulesQueueThreadSpec,
3533
MessageQueueThreadSpec jsQueueThreadSpec) {
36-
mUIBackgroundQueueThreadSpec = uiBackgroundQueueThreadSpec;
3734
mNativeModulesQueueThreadSpec = nativeModulesQueueThreadSpec;
3835
mJSQueueThreadSpec = jsQueueThreadSpec;
3936
}
4037

41-
public @Nullable MessageQueueThreadSpec getUIBackgroundQueueThreadSpec() {
42-
return mUIBackgroundQueueThreadSpec;
43-
}
44-
4538
public MessageQueueThreadSpec getNativeModulesQueueThreadSpec() {
4639
return mNativeModulesQueueThreadSpec;
4740
}
@@ -64,32 +57,11 @@ public static ReactQueueConfigurationSpec createDefault() {
6457
.build();
6558
}
6659

67-
public static ReactQueueConfigurationSpec createWithSeparateUIBackgroundThread() {
68-
MessageQueueThreadSpec spec = Build.VERSION.SDK_INT < 21 ?
69-
MessageQueueThreadSpec.newBackgroundThreadSpec("native_modules", LEGACY_STACK_SIZE_BYTES) :
70-
MessageQueueThreadSpec.newBackgroundThreadSpec("native_modules");
71-
return builder()
72-
.setJSQueueThreadSpec(MessageQueueThreadSpec.newBackgroundThreadSpec("js"))
73-
.setNativeModulesQueueThreadSpec(spec)
74-
.setUIBackgroundQueueThreadSpec(
75-
MessageQueueThreadSpec.newUIBackgroundTreadSpec("ui_background"))
76-
.build();
77-
}
78-
7960
public static class Builder {
8061

81-
private @Nullable MessageQueueThreadSpec mUIBackgroundQueueSpec;
8262
private @Nullable MessageQueueThreadSpec mNativeModulesQueueSpec;
8363
private @Nullable MessageQueueThreadSpec mJSQueueSpec;
8464

85-
public Builder setUIBackgroundQueueThreadSpec(MessageQueueThreadSpec spec) {
86-
Assertions.assertCondition(
87-
mUIBackgroundQueueSpec == null,
88-
"Setting UI background queue multiple times!");
89-
mUIBackgroundQueueSpec = spec;
90-
return this;
91-
}
92-
9365
public Builder setNativeModulesQueueThreadSpec(MessageQueueThreadSpec spec) {
9466
Assertions.assertCondition(
9567
mNativeModulesQueueSpec == null,
@@ -106,7 +78,6 @@ public Builder setJSQueueThreadSpec(MessageQueueThreadSpec spec) {
10678

10779
public ReactQueueConfigurationSpec build() {
10880
return new ReactQueueConfigurationSpec(
109-
mUIBackgroundQueueSpec,
11081
Assertions.assertNotNull(mNativeModulesQueueSpec),
11182
Assertions.assertNotNull(mJSQueueSpec));
11283
}

ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ public <T extends SizeMonitoringFrameLayout & MeasureSpecProvider> int addRootVi
305305
new SizeMonitoringFrameLayout.OnSizeChangedListener() {
306306
@Override
307307
public void onSizeChanged(final int width, final int height, int oldW, int oldH) {
308-
reactApplicationContext.runUIBackgroundRunnable(
308+
reactApplicationContext.runOnNativeModulesQueueThread(
309309
new GuardedRunnable(reactApplicationContext) {
310310
@Override
311311
public void runGuarded() {
@@ -325,7 +325,7 @@ public void removeRootView(int rootViewTag) {
325325
}
326326

327327
public void updateNodeSize(int nodeViewTag, int newWidth, int newHeight) {
328-
getReactApplicationContext().assertOnUIBackgroundOrNativeModulesThread();
328+
getReactApplicationContext().assertOnNativeModulesQueueThread();
329329

330330
mUIImplementation.updateNodeSize(nodeViewTag, newWidth, newHeight);
331331
}
@@ -344,7 +344,7 @@ public void setViewLocalData(final int tag, final Object data) {
344344

345345
reactApplicationContext.assertOnUiQueueThread();
346346

347-
reactApplicationContext.runUIBackgroundRunnable(
347+
reactApplicationContext.runOnNativeModulesQueueThread(
348348
new GuardedRunnable(reactApplicationContext) {
349349
@Override
350350
public void runGuarded() {

ReactAndroid/src/main/java/com/facebook/react/views/modal/ReactModalHostView.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ protected void onSizeChanged(final int w, final int h, int oldw, int oldh) {
306306
if (getChildCount() > 0) {
307307
final int viewTag = getChildAt(0).getId();
308308
ReactContext reactContext = (ReactContext) getContext();
309-
reactContext.runUIBackgroundRunnable(
309+
reactContext.runOnNativeModulesQueueThread(
310310
new GuardedRunnable(reactContext) {
311311
@Override
312312
public void runGuarded() {

0 commit comments

Comments
 (0)