React Native android 8以上版本闪退踩坑笔记

2023-05-16

背景

我的android的测试机版本是android 8,我使用React Native开发的应用,自己测试是正常的。iOS上也是正常的。但是一放到android8以上的版本本就出现了闪退的现象,让我非常的苦恼。

本文就简单的总结一下,给遇到相同情况的朋友避坑。

探索过程

探索过程是及其痛苦,代码一点点注释。最终找到了两种可以导致Android 8以上版本闪退的情况。

  1. WebView隐藏导致闪退
  2. React Navigation 嵌套过多,从子叶跳转祖叶会导致闪退。

而且这两种基本是在Android8 以上版本中安卓中出现,在iOS上也不会出现闪退。

解决过程

WebView隐藏导致的闪退

解决办法有两种:

  1. 不要隐藏WebView,比如:设置成flex:0 只要WebView不显示在界面中就会导致闪退。
    我把WebView的宽高设置成很小的数值,比如:2 界面上只能看到一个小点,但是不会闪退了。
  2. 延时加载WebView。其他组件先渲染,WebView组件延时渲染,也可以避免闪退。

代码示例如下:

	const [showChart, setShowChart] = React.useState(false)

	React.useEffect(() => {
		setTimeout(() => {
			setShowChart(true);
		}, 100);
	}, []);

<View style={{flex: 0}}>
				{showChart?<LoginWebView
					url={url}
					height={20}
					loginScript={loginScript}
					onLoginSuccess={handleLoginSuccess}
					onLayerMsg={handleLayerMsg}
				/>:null}
</View>

React Navigation 嵌套过多,从子叶跳转祖叶会导致闪退。

解决办法:
尽量减少嵌套,子叶跳转祖页有问题,那就尽量避免这种情况发现。

  • 页面1
    • 页面11
      • 页面111
      • 页面112
  • 页面2
    • 页面21
      • 页面211
      • 页面212

比如:子叶跳转祖叶会导致闪退

页面212 navigation.navigate(’页面11’)
会出现闪退。

解决办法就是尽量避免越级的调用,实在遇到调用,就在同级创建相同的页面,这样虽然麻烦,至少解决了闪退的问题。

比如:
页面212 navigation.navigate(’页面211’) 这样同级调用就不会闪退。

我感觉这可能是某种BUG导致的,很难受啊。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native android 8以上版本闪退踩坑笔记 的相关文章

随机推荐

  • Ant Design for React Native精简笔记

    背景 Ant Design是一套不错的UI组件库 xff0c 功能强大 但是依赖了很多其他的组件 xff0c 在RN6 3以后要自己安装以下组件才能正常使用 span class token function yarn span span
  • yarn使用说明

    yarn优点 速度超快 Yarn 缓存了每个下载过的包 xff0c 所以再次使用时无需重复下载 同时利用并行下载以最大化资源利用率 xff0c 因此安装速度更快 超级安全 在执行代码之前 xff0c Yarn 会通过算法校验每个安装包的完整
  • Netty编解码器,Netty自定义编解码器解决粘包拆包问题,Netty编解码器的执行过程详解

    文章目录 一 编解码器概述1 编解码器概述2 编码器类关系图3 解码器类关系图 二 以编解码器为例理解入站出站1 Server端2 Client端3 编解码器3 执行查看结果4 注意事项 三 Netty其他内置编解码器1 Replaying
  • ERROR Error: Reanimated 2 failed to create a worklet

    报错 To reload the app press span class token string 34 r 34 span To span class token function open span developer menu pr
  • React Native创建一个新的项目常用命令

    创建项目 创建一个typescript项目 npx react native init ywh template react native template typescript 导入库 整合 方便一键安装 以下仅是本人常用的组件 xff0
  • 各操作系统支持图标字体的终端推荐

    软件推荐 操作系统推荐macOSiTerm2windowsWindows TerminallinuxGNOME 终端 等androidTermux或TermiusiOSTermius 不完美 如果你在macOS我推荐你使用iterm2 xf
  • MAME set 4 player

    背景 我本身有一个手柄 xff0c 准备12 12在入手一个 然后小杨同学就把他的一对手柄借给我啦 xff0c 让我试试手感 xff0c 好决定买哪个 那么我现在就有3个手柄可以使用 我就想找个3个人以上的游戏来玩玩 首先我就想到了玩街机
  • [视频教程]macOS运行MAME

    操作视频 https www bilibili com video BV1Nr4y1D7SQ 安装 brew span class token function install span mame ROM 把roms文件夹放到以下目录 xf
  • [视频教程]MAME画质优化hq3x

    关于滤镜 xff0c 萝卜白菜各有所爱 我个人喜欢hq3x的画质 视频教程 https www bilibili com video BV1Ji4y1d7j6 默认画质 hq3x 加了层滤镜 xff0c 显示更平滑了 配置方法 核心配置 搜
  • macOS安装最新MAME 报错dyld: Library not loaded:

    在macOS中安装最新版本的MAME 报错 mame dyld Library not loaded 64 rpath SDL2 framework Versions A SDL2 Referenced from Users itkey m
  • ‘@typescript-eslint/no-shadow‘ was not found

    我新建了一个React Native项目 xff0c 然后IDE报错如下 以前新建的项目是不会有任何报错信息的 报错信息 Definition for rule 64 typescript eslint no shadow was not
  • 纯javascript代码修改react 的输入框的值

    背景 我们有一个老的项目在维护 xff0c 项目是使用react dom 64 16 8 6实现的 也就是react开发的 xff0c 但是因为某种原因 xff0c 暂时找不到源码了 时间紧任务重 xff0c 必须赶紧解决问题 简化需求 x
  • 【视频教程】MAME0.238配置分享

    视频链接 https www bilibili com video BV15q4y1B7Hn 附件下载 百度网盘分享 链接 https pan baidu com s 1rsBdRn99 KWjhRpPrGBmfw 提取码 4ge5CSDN
  • Netty解决粘包拆包问题,Netty使用自定义编解码器解决粘包拆包问题

    文章目录 一 什么是粘包拆包二 粘包拆包实例1 Server端2 Client端3 测试一下 三 解决粘包拆包的方案四 使用自定义编解码器解决粘包拆包问题1 定义协议包2 编解码器3 server端4 client端5 测试一下 一 什么是
  • vim表格格式化插件vim-table-mode

    简介 一个很棒的自动表格创建器和格式化程序 xff0c 允许您在键入时创建整洁的表格 项目主页 https github com dhruvasagar vim table mode 安装 这里以packer为例 packer插件管理器安装
  • React Native打包安卓应用笔记

    前言 大部分内容是复制过来的 xff0c 主要做了一下整理 xff0c 方便自己查阅 打包发布 Android 要求所有应用都有一个数字签名才会被允许安装在用户手机上 xff0c 所以在把应用发布到应用市场之前 xff0c 你需要先生成一个
  • 无需AS通过命令行启动安卓模拟器

    背景 我是做RN开发的 xff0c 要经常启动安卓模拟器来测试 时间久了 xff0c Android Studio 成安卓模拟器启动器了 每次打开AS还是挺久的 xff0c 所以就想直接通过命令行来启动安卓模拟器 xff0c 这样会快很多
  • ssh登录时自动运行命令

    方法一 编辑 nvim ssh rc 里面写上要执行的命令 比如 xff1a span class token builtin class name echo span span class token string 39 command
  • React Native倒计时

    代码 span class token keyword import span span class token operator span span class token keyword as span React span class
  • React Native android 8以上版本闪退踩坑笔记

    背景 我的android的测试机版本是android 8 xff0c 我使用React Native开发的应用 xff0c 自己测试是正常的 iOS上也是正常的 但是一放到android8以上的版本本就出现了闪退的现象 xff0c 让我非常