Don't access ReadableNativeArray on UI thread

Summary: ReadableNativeArray initializes the ReactBridge which loads a bunch of c++ classes. Let's avoid doing this on the UI thread.

Reviewed By: mdvacca

Differential Revision: D10108380

fbshipit-source-id: ab4520535288ce450a865952e996b716d571df7f
This commit is contained in:
Andrew Chen (Eng)
2018-10-01 16:07:29 -07:00
committed by Facebook Github Bot
parent b030fcbbf5
commit 4ac500a337
4 changed files with 35 additions and 28 deletions
@@ -7,12 +7,12 @@
package com.facebook.react.bridge;
import com.facebook.infer.annotation.Assertions;
import com.facebook.jni.HybridData;
import com.facebook.proguard.annotations.DoNotStrip;
import com.facebook.react.config.ReactFeatureFlags;
import java.util.ArrayList;
import java.util.Arrays;
import com.facebook.infer.annotation.Assertions;
import javax.annotation.Nullable;
/**
@@ -34,9 +34,8 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
private @Nullable ReadableType[] mLocalTypeArray;
private static int jniPassCounter = 0;
private static boolean mUseNativeAccessor = false;
public static void setUseNativeAccessor(boolean useNativeAccessor) {
mUseNativeAccessor = useNativeAccessor;
ReactFeatureFlags.useArrayNativeAccessor = useNativeAccessor;
}
public static int getJNIPassCounter() {
return jniPassCounter;
@@ -77,7 +76,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public int size() {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return sizeNative();
}
@@ -87,7 +86,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public boolean isNull(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return isNullNative(index);
}
@@ -97,7 +96,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public boolean getBoolean(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getBooleanNative(index);
}
@@ -107,7 +106,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public double getDouble(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getDoubleNative(index);
}
@@ -117,7 +116,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public int getInt(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getIntNative(index);
}
@@ -127,7 +126,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public String getString(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getStringNative(index);
}
@@ -137,7 +136,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public ReadableNativeArray getArray(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getArrayNative(index);
}
@@ -147,7 +146,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public ReadableNativeMap getMap(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getMapNative(index);
}
@@ -157,7 +156,7 @@ public class ReadableNativeArray extends NativeArray implements ReadableArray {
@Override
public ReadableType getType(int index) {
if (mUseNativeAccessor) {
if (ReactFeatureFlags.useArrayNativeAccessor) {
jniPassCounter++;
return getTypeNative(index);
}