RN开发搬砖经验之—“Calculated frame index should never be lower than 0“崩溃问题分析

news2024/11/17 16:26:00

在这里插入图片描述

问题重现

崩溃堆栈:

Back traces starts.
java.lang.RuntimeException: java.lang.IllegalStateException: Calculated frame index should never be lower than 0
	at com.facebook.react.animated.NativeAnimatedModule$1.doFrameGuarded(NativeAnimatedModule.java:279)
	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
	at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
	at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1758)
	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1769)
	at android.view.Choreographer.doCallbacks(Choreographer.java:1273)
	at android.view.Choreographer.doFrame(Choreographer.java:1134)
	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1743)
	at android.os.Handler.handleCallback(Handler.java:983)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:226)
	at android.os.Looper.loop(Looper.java:328)
	at android.app.ActivityThread.main(ActivityThread.java:9139)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:586)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)

重现场景:
硬件:vivo S18(V2323A) Android 14
逻辑: 使用FlashList分页加载数据,加载更多数据时,快速滑动列表,向上或向上滑动 (出现崩溃)

问题分析

即然是RN框架代码的问题,就直接去代码Github去逛逛了,果然有相关的报BUG与讨论
在这里插入图片描述
https://github.com/facebook/react-native/issues/35766

问题原因

runAnimationStep的代码逻辑里边,有个自身业务逻辑判断,业务逻辑判断为异常时,就直接抛异常了
fix方案是Release包输出warning!,Debug包才殷抛异常!
在这里插入图片描述

该提交:
https://github.com/facebook/react-native/commit/a46a7cd1f613d6eaea1d1cd07751f17cdc07c21b

解决方案

推荐还是要升级RN的版本(首选),即少升级到 0.72.2
比较麻烦一点就是项目依赖的第三方库都得升级!!!!!!
在这里插入图片描述
官方有升级的指引文档
https://react-native-community.github.io/upgrade-helper/?from=0.70.6&to=0.72.2

在这里插入图片描述

其它

出现该问题的机型有
在这里插入图片描述

根本原因,应该是跟这位哥们提到的系统doFrame的回调参数结果有关
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1858944.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【FFMPEG+Mediamtx】 本地RTSP测试推流记录

利用本地FFMPEGMediamtx 搭建本地RTSP测试推流电脑摄像头 起因 本来要用qt的qml的Video做摄像头测试。 😔但是,不在现场,本地测试,又要测试rtsp流,又因为搜了一圈找不到一个比较好的在线测试rtsp推流网址&#x1f6…

JAVA每日作业day6.24

ok了家人们今天学习了一些关键字,用法和注意事项,静态代码块这些知识,闲话少叙我们一起看看吧。 一,final关键字 1.1 final关键字的概述 final: 不可改变。可以用于修饰类、方法和变量。 类:被修饰的类&a…

Hex文件与BIn文件的关系

单片机中Hex文件与BIn文件的关系 前言 时间:2024/6/24 官方网站:.hex文件解析:Hexadecimal (Intel-Format) File (.hex) Definition 参考博客:实现STM32烧写程序-(3) Hex文件结构-CSDN博客 文件:《Hexfrmt.pdf》描述了…

地信大四,实习重要吗?怎么找实习岗位?

“地信怎么找实习啊?” “实习三个月以上?暑假只有两个月啊” “什么岗位实习比较有用?” “助理类岗位是做什么?” …… 同学们好啊,不知不觉24年已经是过完一小半了,24届毕业的同学们也差不多就要迎来…

JSON.parse(JSON.stringify())导致的响应式属性丢失

console.log("formdata赋值前", this.formdata);console.log("row",row);console.log("row序列化后", JSON.parse(JSON.stringify(row)));this.formdata JSON.parse(JSON.stringify(row)); console.log("formdata赋值后", this.formd…

0803功放3

1.甲乙类互补堆成功放, 理想12v t提供静态偏置,消去交越失真 2.12V Po(12)2/2RL 3.电压并联负反馈 并联减小输入电阻 电压减小输出电阻 4.-Rf/Ri 这个问题是工艺问题引起的,最早用PNP管用的锗管,后面硅工艺成熟后用的就是硅管&…

springboot 网上商城系统-计算机毕业设计源码08789

摘 要 随着互联网趋势的到来,各行各业都在考虑利用互联网将自己推广出去,最好方式就是建立自己的互联网系统,并对其进行维护和管理。在现实运用中,应用软件的工作规则和开发步骤,采用Java技术建设网上商城系统。 本设…

数据库攻防之MongoDB

MongoDB是一个安全性相对较高的非关系型数据库,它的安全问题主要出现在使用、配置过程当中。目前随着MongoDB的流行,它也成为了红队攻防领域不可忽视的数据库。 0x01 MongoDB简介 MongoDB 是一个由C编写、基于分布式文件存储的开源数据库系统&#xff…

java运维交接项目逆向工程

​ 背景 有承接过Java项目运维的团队估计都处理过的一件事情,就是同步生产代码跟本地代码,条件再差些甚至要直接基于生产部署包逆向本地源码工程。而哪怕是原运维团队交接了源码,往往也会历史久远的原因,给了一份不太可靠的源码…

Navicat连接服务器MySQL

Navicat连接服务器MySQL 1. Navicat连接服务器MySQL2. 如何查看MySQL用户名和密码3. 修改MySQL登录密码4. 安装MySQL(Centos7)遇到错误和问题1. error 1045 (28000): access denied for user rootlocalhost (using password:yes) 1. Navicat连接服务器MySQL 选择数据库 直接使用…

记录react实现选择框一二级联动出现的问题

需求:用户在选择第一个选择框的选项后,第二个选择框的选项会根据第一个选择框的选择动态更新。如图所示 出现的问题 一级分类选择之后二级分类没有数据,第二次重新选择一级分类的时候,二级分类就会有值。 第一次点击截图&#x…

提升办公效率的利器—OnlyOffice文档8.1深度体验

目录 1. 前言 2. 安装 3. 基本使用 3.1 文档编辑 3.2 表格处理 3.3 演示文稿 4. 个人评价 5. 总结 1. 前言 在当今信息化时代,办公软件已经成为我们日常工作中不可或缺的工具。无论是撰写文档、处理数据,还是制作演示文稿,办公软件的…

数电大作业-四输入表决器

(PCB和multisim仿真画的有很大问题,没有VCC输入和GND,没学过直接裸画的,之后会好好看视频学习) 应用背景: 四个评委,三个及以上评委同时按下通过按钮时,选手才能通过。否则不通过。…

【Flink metric(3)】chunjun是如何实现脏数据管理的

文章目录 一. 基础逻辑二. DirtyManager1. 初始化2. 收集脏数据并check3. 关闭资源 三. DirtyDataCollector1. 初始化2. 收集脏数据并check3. run:消费脏数据4. 释放资源 四. LogDirtyDataCollector 一. 基础逻辑 脏数据管理模块的基本逻辑是: 当数据消…

适用于轨道交通专用的板卡式网管型工业以太网交换机

是网管型 CompactPCI板卡式冗余环网交换机。前面板带有6个 10/100/1000Base-T(X)M12接口。后面的CPCI接口有 8个10/100/1000Base-T (X) 以太网接口。 是特别为轨道交通行业EN50155标准要求而设计的坚固型交换机。它同时具有以下特性: ● 支持2线以太网距离扩展端口&…

Crypto++ 入门

一、简介 Crypto(也称为CryptoPP、libcrypto或cryptlib)是一个免费的开源C库,提供了多种加密方案。它由Wei Dai开发和维护,广泛应用于需要强大加密安全的各种应用程序中。该库提供了广泛的加密算法和协议的实现,包括&…

【通用技巧】自动获取日志存放路径,无需手动修改配置文件

我们在部署环境的时候,常常会手动修改一些配置文件的存放地址,比如日志的路径、截图的路径,这是因为我们的环境不一样,部署应用的位置也不一样导致的。如果位置写死了,那么就会造成通用性很差,所以我们经常…

明明设置允许跨域,为什么还会出现跨域请求的问题

一、问题 在微服务项目中,明明已经设置允许跨域访问: 为什么还会出现跨域请求问题? 二、为什么 仔细查看错误提示信息:When allowCredentials is true, allowedOrigins cannot contain the special value "*" since t…

NestJs连接数据库

文章目录 一、下载 MySql 数据库二、下载VsCode插件查询、插入数据 一、下载 MySql 数据库 NestJS连接数据库我选择的是MySql,首先先安装nestjs/typeorm 、typeorm、 mysql2 执行命令: pnpm install nestjs/typeorm typeorm mysql2 -S 连接数据库需要你…

C语言小例程28/100

题目&#xff1a;利用递归方法求5!。 程序分析&#xff1a;递归公式&#xff1a;fnfn_1*4! #include <stdio.h>int main() {int i;int fact(int);for(i0;i<6;i){printf("%d!%d\n",i,fact(i));} } int fact(int j) {int sum;if(j0){sum1;} else {sumj*fac…