Closed J-a-g closed 2 years ago
身边没有Mate40 Pro,但在华为P40 Harmony OS 2.0.0 上可以测试通过,可见不是鸿蒙系统的问题。就像#621里说的,的确已知有少数的华为的系统版本,自定义了ANR流程,自定义的ANR流程跟Android的ANR流程并行,所以在少数情况下,可能会有一些奇怪的时序(比如弹窗之后才收到SIGQUIT)。之前跟华为的同事沟通过,他们并不会移除Android原有的ANR流程,所以在绝大部分情况下,目前的方案都是兼容的。
应用上模拟了以下情况:两个按钮A、B。一个按钮A就是Log打印日志,另外一个按钮B则是模拟ANR问题代码如下:
while (true) { try { Thread.sleep(1000); } catch (Exception ignored) { } } 测试步骤:
方式一.点击一次按钮B,模拟ANR代码执行后,到显示ANR的弹框出现,一直不停的点击按钮A,
表现:此时可以收到SIGQUIT信号,系统日志也可以生成
方式二.点击一次按钮B,模拟ANR代码执行后,再点击几次按钮A(3-4次左右把),到显示ANR弹框的出现,
表现:此时收不到SIGQUIT 信号,系统日志也没有正常生成
华为工单回复,目前2.0系统该问题存在一些问题。
查看类似问题 https://github.com/Tencent/matrix/issues/621,补充说明实际不会出现检测不到 SIGQUIT 的情况?但是实际使用还是存在检测不到的情况 测试机:Mate 40 Pro 模拟 ANR 后,华为手机第一次显示 ANR 弹框后,日志上一直没有打印收到 SIGQUIT 信号的日志,除非点击第一次显示的ANR弹框的 等待 后,下次出现ANR弹框后会收到 SIGQUIT 信号,并生成本地日志问题。 但是真实场景用户一般不会点击 等待 的把