reactnative崩溃处理
# ReactNative崩溃处理
# 痛点
每次reactnative各种崩溃直接导致整体app崩溃
# 源码
reactNative在Android上一样是messageQueue-looper机制:
queue的exceptionHandler为:
这个NativeModuleExceptionHandler是外面传入的:
# 当没有设置nativecallExceptionHandler时:
使用的是内置的devSupportManager提供的handler
异常直接往外抛,导致jvm崩溃
# 所以我们需要做的是:
初始化ReactNativeContext时,传入我们自己的NativeModuleCallExceptionHandler,在里面:
- 将exception上报到自己的统计平台,而不是抛出异常.根据异常类型,看是否需要结束RNActivity.
- 非正式包时,弹出一个界面展示exception给开发和测试看,便于debug
ReactInstanceManager.builder().setNativeModuleCallExceptionHandler(new RNExceptionHandler())
public class RNExceptionHandler implements NativeModuleCallExceptionHandler {
@Override
public void handleException(Exception e) {
ExceptionReporter.reportException(e);
if(enableLog()){
String msg = throwableToStr(e);
showDialog(msg);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
#
编辑 (opens new window)
上次更新: 2022/08/25, 20:20:31