android: attempt to fix assertion errors in ReactInstanceManager

This is the main one:
df4e67fe75/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java (L512)

Why this happens is a mystery wrapped in an enigma.
This commit is contained in:
Saúl Ibarra Corretgé 2019-05-01 16:02:42 +02:00 committed by Saúl Ibarra Corretgé
parent dae451e6fa
commit 6aa895b679
3 changed files with 13 additions and 7 deletions

View File

@ -111,8 +111,7 @@ public abstract class BaseReactView<ListenerT>
setBackgroundColor(BACKGROUND_COLOR); setBackgroundColor(BACKGROUND_COLOR);
ReactInstanceManagerHolder.initReactInstanceManager( ReactInstanceManagerHolder.initReactInstanceManager((Activity)context);
((Activity) context).getApplication());
// Hook this BaseReactView into ExternalAPI. // Hook this BaseReactView into ExternalAPI.
externalAPIScope = UUID.randomUUID().toString(); externalAPIScope = UUID.randomUUID().toString();

View File

@ -25,6 +25,7 @@ import android.os.Build;
import com.calendarevents.CalendarEventsPackage; import com.calendarevents.CalendarEventsPackage;
import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.core.PermissionListener; import com.facebook.react.modules.core.PermissionListener;
/** /**
@ -117,7 +118,13 @@ public class JitsiMeetActivityDelegate {
= ReactInstanceManagerHolder.getReactInstanceManager(); = ReactInstanceManagerHolder.getReactInstanceManager();
if (reactInstanceManager != null) { if (reactInstanceManager != null) {
reactInstanceManager.onHostPause(activity); // Try to avoid a crash because some devices trip on this assert:
// https://github.com/facebook/react-native/blob/df4e67fe75d781d1eb264128cadf079989542755/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java#L512
// Why this happens is a mystery wrapped in an enigma.
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (activity == reactContext.getCurrentActivity()) {
reactInstanceManager.onHostPause(activity);
}
} }
} }

View File

@ -18,7 +18,6 @@
package org.jitsi.meet.sdk; package org.jitsi.meet.sdk;
import android.app.Activity; import android.app.Activity;
import android.app.Application;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.facebook.react.ReactInstanceManager; import com.facebook.react.ReactInstanceManager;
@ -175,9 +174,9 @@ class ReactInstanceManagerHolder {
* time. All {@code ReactRootView} instances will be tied to the one and * time. All {@code ReactRootView} instances will be tied to the one and
* only {@code ReactInstanceManager}. * only {@code ReactInstanceManager}.
* *
* @param application {@code Application} instance which is running. * @param activity {@code Activity} current running Activity.
*/ */
static void initReactInstanceManager(Application application) { static void initReactInstanceManager(Activity activity) {
if (reactInstanceManager != null) { if (reactInstanceManager != null) {
return; return;
} }
@ -215,7 +214,8 @@ class ReactInstanceManagerHolder {
reactInstanceManager reactInstanceManager
= ReactInstanceManager.builder() = ReactInstanceManager.builder()
.setApplication(application) .setApplication(activity.getApplication())
.setCurrentActivity(activity)
.setBundleAssetName("index.android.bundle") .setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index.android") .setJSMainModulePath("index.android")
.addPackages(packages) .addPackages(packages)