# rnDemo **Repository Path**: tzjin/rnDemo ## Basic Information - **Project Name**: rnDemo - **Description**: rndemo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-03-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README rn demo # 已有 1.http 请求 2.realm 数据库 3.js 与 native 的互调 # todo 1.尺寸的适配问题 3.如何自定义组件 >http://www.lrdcq.com/me/read.php/61.htm 4.各种现有组件学习 5.热更新问题 6.报错收集问题 7.二维码 android 权限问题 多图选择 >https://github.com/syanbo/react-native-syan-image-picker # npm 发现个网址 https://registry.npmjs.org/+xxx ## android ### Reload崩溃 E/AndroidRuntime: FATAL EXCEPTION: mqt_native_modules Process: com.rndemo, PID: 29465 java.lang.NullPointerException at java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:87) at java.lang.StringBuilder.(StringBuilder.java:95) at com.facebook.react.devsupport.DevSupportManagerImpl$JSExceptionLogger.log(DevSupportManagerImpl.java:303) at com.facebook.react.devsupport.DevSupportManagerImpl.handleException(DevSupportManagerImpl.java:287) at com.facebook.react.bridge.CatalystInstanceImpl.onNativeException(CatalystInstanceImpl.java:501) at com.facebook.react.bridge.CatalystInstanceImpl.access$900(CatalystInstanceImpl.java:40) at com.facebook.react.bridge.CatalystInstanceImpl$NativeExceptionHandler.handleException(CatalystInstanceImpl.java:517) at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:33) at android.os.Looper.loop(Looper.java:229) at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:194) at java.lang.Thread.run(Thread.java:848) 然后跟踪到这里,涉及到handler无法跟踪 MessageQueueThreadHandler extends Handler{ public void dispatchMessage(Message msg) { try { super.dispatchMessage(msg); } catch (Exception e) { mExceptionHandler.handleException(e); } } } 接着我打印了第一次启动与Reload比较 D/ReactNative: ReactInstanceManager.ctor() D/ReactNative: ReactInstanceManager.createReactContextInBackground() D/ReactNative: ReactInstanceManager.recreateReactContextInBackgroundInner() D/ReactNative: ReactInstanceManager.onJSBundleLoadedFromServer() D/ReactNative: ReactInstanceManager.recreateReactContextInBackground() D/ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread() W/unknown:ReactNative: Packager connection already open, nooping. D/ReactNative: ReactInstanceManager.createReactContext() D/ReactNative: Initializing React Xplat Bridge. D/ReactNative: Initializing React Xplat Bridge before initializeBridge D/ReactNative: Initializing React Xplat Bridge after initializeBridge D/ReactNative: CatalystInstanceImpl.runJSBundle() D/ReactNative: ReactInstanceManager.setupReactContext() D/ReactNative: CatalystInstanceImpl.initialize() W/unknown:ReactNative: Packager connection already open, nooping. D/ReactNative: ReactInstanceManager.attachRootViewToInstance() I/ReactNativeJS: Running application "Zxing" with appParams: {"rootTag":1}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF Reload D/ReactNative: ReactInstanceManager.onJSBundleLoadedFromServer() D/ReactNative: ReactInstanceManager.recreateReactContextInBackground() D/ReactNative: ReactInstanceManager.runCreateReactContextOnNewThread() D/ReactNative: ReactInstanceManager.tearDownReactContext() D/ReactNative: CatalystInstanceImpl.destroy() start W/unknown:ReactNative: Packager connection already open, nooping. D/ReactNative: ReactInstanceManager.createReactContext() D/ReactNative: Initializing React Xplat Bridge. D/ReactNative: Initializing React Xplat Bridge before initializeBridge D/ReactNative: Initializing React Xplat Bridge after initializeBridge D/ReactNative: CatalystInstanceImpl.runJSBundle() D/ReactNative: ReactInstanceManager.setupReactContext() D/ReactNative: CatalystInstanceImpl.initialize() D/ReactNative: ReactInstanceManager.attachRootViewToInstance() W/unknown:ReactNative: Packager connection already open, nooping. 与init新工程对比发现 有:D/ReactNative: CatalystInstanceImpl.destroy() start 少了:D/ReactNative: CatalystInstanceImpl.destroy() end 然后跟还是没跟到原因,最后打断点查看e的内容 找到了 ReactInstanceManager reactInstanceManager = ((ReactApplication) getReactApplicationContext().getApplicationContext()).getReactNativeHost().getReactInstanceManager(); reactInstanceManager.getCurrentReactContext().removeActivityEventListener(listener);