Quellcode durchsuchen

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.
master
Saúl Ibarra Corretgé vor 6 Jahren
Ursprung
Commit
6aa895b679

+ 1
- 2
android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java Datei anzeigen

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

+ 8
- 1
android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java Datei anzeigen

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

+ 4
- 4
android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java Datei anzeigen

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

Laden…
Abbrechen
Speichern