From cd12f256e97cc3630cfb3fb85f397b5d19f41f13 Mon Sep 17 00:00:00 2001 From: Joshua Gross Date: Mon, 21 Oct 2019 11:45:56 -0700 Subject: [PATCH] Change `tearDownReactContext` ordering to prevent null assertion Summary: In `tearDownReactContext`, `reactContext.destroy()` sets `mCatalystInstance` to null. We cannot call `reactContext.getCatalystInstance()` after that without hitting an assertion. Change ordering so that doesn't happen in reload or teardown. Changelog: [Internal] Reviewed By: makovkastar Differential Revision: D18041279 fbshipit-source-id: 22658dc506b76cf58aee1008841abacfe9410c9d --- .../main/java/com/facebook/react/ReactInstanceManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java index c70f0eb5025..b40b80d00d1 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java @@ -1126,9 +1126,12 @@ public class ReactInstanceManager { } } + // Remove memory pressure listener before tearing down react context + // We cannot access the CatalystInstance after destroying the ReactContext. + mMemoryPressureRouter.removeMemoryPressureListener(reactContext.getCatalystInstance()); + reactContext.destroy(); mDevSupportManager.onReactInstanceDestroyed(reactContext); - mMemoryPressureRouter.removeMemoryPressureListener(reactContext.getCatalystInstance()); } /** @return instance of {@link ReactContext} configured a {@link CatalystInstance} set */