ReactNative踩坑:ReactInstanceEventListener内存泄漏

这里写图片描述

内存走查的时候发现,app退出后堆栈中存在两个闪屏页的Activity,如上图所示。

导出hprof文件后,重新用AndroidStudio打开,找到SplashActivity如下图:
这里写图片描述

选择蓝色的这一行Jump to Source

这里写图片描述

出现了如下代码:

  private void createContext() {
    final ReactInstanceManager manager = getReactNativeHost().getReactInstanceManager();
    if (!manager.hasStartedCreatingInitialContext()) {
      manager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
        @Override
        public void onReactContextInitialized(ReactContext context) {
          preLoadBussiness();
        }
      });
      manager.createReactContextInBackground();
    } else {
      preLoadBussiness();
    }
  }

这段代码是监听ReactNative初始化,初始化完成后做一些事情。
至此大概就猜到是监听器没有反注册导致内存泄漏。

在Activity的OnDestroy或者preLoadBussiness之前进行反注册就解决了这个内存泄漏。

猜你喜欢

转载自blog.csdn.net/qq_15602635/article/details/79274021
今日推荐