Launch timeout has expired, giving up wake lock

前几天分析一个APP崩溃的问题,APP启动之后跟了几秒钟然后突然挂掉了,打印里面有Launch timeout has expired, giving up wake lock这个LOG,网是查了下说是启动超时.但是一直不太理解,然后把startactivity流程仔细看了一遍,大概看明白了什么情况下会出现这个问题.
1.在activitystack.java文件里面
函数resumeTopActivityInnerLocked是拉Activity的真正入口地方,在这个函数里面会
在这里插入图片描述
在这里插入图片描述
这两个拉起activity的入口基本都是直接或间接在这个函数里面拉起来的。在开始拉的时候会判断目前有没有Activity正处于Resumeing状态
如果有就停止它,并拉起一个10S的Delay(相当定时器)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里就是延迟10S,发一个TIMEOUT的信息。当10S内被PAUSE的程序执行完成后会remove这个消息,没有的话就倒霉了。那么mResumedActivity这个对象变量是哪里被赋值哪里又被清空呢。在正常流程下,在resumeTopActivityInnerLocked函数里面,要拉起activity的时候(无论是LAUNCHER还是RESUME)就会为这个对象赋值,resumeTopActivityInnerLocked->setResumedActivityLocked 如图
在这里插入图片描述哪又是什么时候清空的,在程序拉起完成之后清空的,如下图
在这里插入图片描述在这里插入图片描述finishActivity->requestFinishActivityLocked->finishActivityLocked->finishCurrentActivityLocked.
那么就很清楚了,当应用启动时判断当前有没有正在启动的activity,如果有就停止它并拉起一个10S的计时器。停止成功就取消计时器。继续执行,把当前招待设置成正在启动的activity并开始拉activity,拉成功之后就把正在启动的变量设置为NULL。那么问题来了,如果你上个APP启动没完成你马上又启动自己的APP,如果那个APP oncreate onresume onpause写的很乱并阻塞,结果你自己写的APP挂了,不是很倒霉?

当遇到`velodyne poll timeout`错误时,这通常意味着在尝试从Velodyne LiDAR设备读取数据时,连接超时或者响应时间过长。这种情况可能由以下几个原因引起: 1. **硬件问题**:设备未正确连接或通信线路有问题,导致数据传输延迟。 2. **软件配置**:配置文件中指定的通信参数(如波特率、IP地址等)不正确,或者网络设置有误。 3. **资源占用**:其他进程可能占用了与Velodyne通信所需的端口,导致阻塞。 4. **启动顺序**:如果在运行`roslaunch`命令之前没有正确初始化设备,也可能触发此错误。 解决方法包括: 1. **检查硬件连接**:确保Velodyne LiDAR已正确连接并供电,且电缆没有损坏。 2. **验证配置**:确认`VLP16_points.launch`文件中指定的设备IP地址和端口号与实际设备匹配。 3. **重启服务**:尝试停止并重新启动`velodyne_node`服务,有时候简单的重启可以解决问题。 4. **排查冲突**:检查是否有其他应用正在使用相同的端口,如有必要,更改配置以避免冲突。 5. **增加超时时间**:在启动文件中调整`poll()`的超时设置,但注意过度延长可能会掩盖更深层次的问题。 要执行这些步骤,你可以按照以下操作: ```bash # 停止可能冲突的服务 rosnode kill velodyne_node # 检查配置文件 nano VLP16_points.launch # 修改超时时间(如果适用) <param name="poll_timeout" value="0.1" /> <!-- 可能需要增大到适当的数值 --> # 重新启动服务 roslaunch velodyne_pointcloud VLP16_points.launch # 监视日志以查看更新状态 tail -f /var/log/roslaunch.log ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bruk_spp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值