技术经验谈 技术经验谈
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

hss01248

一号线程序员
首页
  • 最佳实践

    • 抓包
    • 数据库操作
  • ui

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 总纲
  • 整体开发框架
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 最佳实践

  • ui

  • 优化

  • aop

  • apm

  • 架构

    • Android布局方案
    • android技术选型
    • okhttp拦截器的一些常规操作
    • okhttp日志-监测-可视化
    • reactnative崩溃处理
      • 当没有设置nativecallExceptionHandler时:
    • 一些全局处理
    • 关于网络框架设计封装的扯淡
    • 日志回捞系统设计
    • 设备唯一性id问题
  • webview

  • rxjava

  • activity-fragment-view的回调和日志
  • Android加密相关
  • Android命令行操作
  • app后台任务
  • kotlin
  • kotlin漫谈
  • kotlin语言导论
  • sentry上传mapping.txt文件
  • so放于远程动态加载方案
  • states
  • Xposed模块开发
  • 一个关于manifest合并的猥琐操作
  • 玩坏android存储
  • 获取本app的安装来源信息
  • Android
  • 架构
hss01248
2020-07-13
目录

reactnative崩溃处理

# ReactNative崩溃处理

# 痛点

每次reactnative各种崩溃直接导致整体app崩溃

# 源码

reactNative在Android上一样是messageQueue-looper机制:

image-20200713112451176

queue的exceptionHandler为:

image-20200713112754694

image-20200713112828181

这个NativeModuleExceptionHandler是外面传入的:

企业微信截图_b485fa5b-1299-49f4-be83-6e83c6779bfc

# 当没有设置nativecallExceptionHandler时:

使用的是内置的devSupportManager提供的handler

企业微信截图_24d8ae10-370c-4464-8fbc-71d55c499c1b

企业微信截图_75f0ab86-25f3-48b5-9ea0-b3085f3cc42e

异常直接往外抛,导致jvm崩溃

企业微信截图_f72d5393-3e1d-4f8d-a158-b187dd5c0c4c

# 所以我们需要做的是:

初始化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

#

编辑 (opens new window)
上次更新: 2022/08/25, 20:20:31
okhttp日志-监测-可视化
一些全局处理

← okhttp日志-监测-可视化 一些全局处理→

最近更新
01
截图后的自动压缩工具
12-27
02
图片视频文件根据exif批量重命名
12-27
03
chatgpt图片识别描述功能
02-20
更多文章>
Theme by Vdoing | Copyright © 2020-2025 | 粤ICP备20041795号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式