Browse Source

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é 6 years ago
parent
commit
6aa895b679

+ 1
- 2
android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java View File

111
 
111
 
112
         setBackgroundColor(BACKGROUND_COLOR);
112
         setBackgroundColor(BACKGROUND_COLOR);
113
 
113
 
114
-        ReactInstanceManagerHolder.initReactInstanceManager(
115
-            ((Activity) context).getApplication());
114
+        ReactInstanceManagerHolder.initReactInstanceManager((Activity)context);
116
 
115
 
117
         // Hook this BaseReactView into ExternalAPI.
116
         // Hook this BaseReactView into ExternalAPI.
118
         externalAPIScope = UUID.randomUUID().toString();
117
         externalAPIScope = UUID.randomUUID().toString();

+ 8
- 1
android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java View File

25
 import com.calendarevents.CalendarEventsPackage;
25
 import com.calendarevents.CalendarEventsPackage;
26
 import com.facebook.react.ReactInstanceManager;
26
 import com.facebook.react.ReactInstanceManager;
27
 import com.facebook.react.bridge.Callback;
27
 import com.facebook.react.bridge.Callback;
28
+import com.facebook.react.bridge.ReactContext;
28
 import com.facebook.react.modules.core.PermissionListener;
29
 import com.facebook.react.modules.core.PermissionListener;
29
 
30
 
30
 /**
31
 /**
117
             = ReactInstanceManagerHolder.getReactInstanceManager();
118
             = ReactInstanceManagerHolder.getReactInstanceManager();
118
 
119
 
119
         if (reactInstanceManager != null) {
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 View File

18
 package org.jitsi.meet.sdk;
18
 package org.jitsi.meet.sdk;
19
 
19
 
20
 import android.app.Activity;
20
 import android.app.Activity;
21
-import android.app.Application;
22
 import android.support.annotation.Nullable;
21
 import android.support.annotation.Nullable;
23
 
22
 
24
 import com.facebook.react.ReactInstanceManager;
23
 import com.facebook.react.ReactInstanceManager;
175
      * time. All {@code ReactRootView} instances will be tied to the one and
174
      * time. All {@code ReactRootView} instances will be tied to the one and
176
      * only {@code ReactInstanceManager}.
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
         if (reactInstanceManager != null) {
180
         if (reactInstanceManager != null) {
182
             return;
181
             return;
183
         }
182
         }
215
 
214
 
216
         reactInstanceManager
215
         reactInstanceManager
217
             = ReactInstanceManager.builder()
216
             = ReactInstanceManager.builder()
218
-                .setApplication(application)
217
+                .setApplication(activity.getApplication())
218
+                .setCurrentActivity(activity)
219
                 .setBundleAssetName("index.android.bundle")
219
                 .setBundleAssetName("index.android.bundle")
220
                 .setJSMainModulePath("index.android")
220
                 .setJSMainModulePath("index.android")
221
                 .addPackages(packages)
221
                 .addPackages(packages)

Loading…
Cancel
Save