在 React Native 的与 Android 集成文档中,它包括了以下代码片段以用于与 Android 集成。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
.setJSMainModulePath("index")
.addPackage(new MainReactPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
mReactRootView.startReactApplication(mReactInstanceManager, "MyReactNativeApp", null);
setContentView(mReactRootView);
}
然而,当我按原样使用时,我会得到一个100%的可重现的内存泄漏问题,原因是ThemedReactContext
持有对ReactRootView
的引用,而ReactRootView
又持有对我的自定义活动的引用。
这是因为传递给ReactRootView
构造函数的Context
参数是this
,即对我的自定义活动的引用。
相反,如果我执行以下操作:
mReactRootView = new ReactRootView(getApplication());
我没有发现内存泄漏。
更改ReactRootView的源是否安全,并且这是一个应该被修复或者应该更改文档的错误吗?