ANR 问题详情

我们没升到386,我是基于373 DIY修改的,方案不是该ALooper,跟官方不一样, AGDK/GameActivity ANR Bug · Issue #17841 · cocos/cocos-engine

1赞

确认没有下降。我们是4月25号左右更新的版本,升级到了3.8.6。观察到今天了。 我们是自己的项目在谷■后台统计的,没有单独的demo。

好的,谢谢,那我们试试这个修改

想请教一下,我看了你的修改方案,想问一下这个 onPause函数除了要新增一些代码,还要把原来的 android_app_set_activity_state(ToApp(activity), APP_CMD_PAUSE);注释掉?

是的,切换到后台,AGDK会执行onPause函数,如果还设置CMD_PAUSE,后续ALooper就会处理这个pause命令,进而可能引发ANR

我的方案是将pause状态暂存到一个状态栈,等后续process_cmd执行,优先从状态栈中读取状态处理

哦,明白了

我们使用了这个方案并更新了一个版本,新版本显示这个ANR解决了。 @song2008_2001 官方3.8.6的 把 ALooper_pollAll 换成 ALooper_pollOnce 并不能解决这个ANR

1赞

ALooper_pollOnce其实是Google AGDK官方给的方案,估计他们是没怎么大范围测试

如果你方便提供ALooper_pollOnce的ANR堆栈信息截图,我去跟Google他们反馈下

@haroel 就是这个,之前换成 ALooper_pollOnce 还是大量这个ANR

我看已经处理了的,可是我这边3.8.7依旧经常报这个onPause的anr,谷■超过阈值了。
实在奇怪

大佬牛逼,我们也遇到这个问题了,打算实行您的修复方案,请问如果这样在onPause时推迟了pause的处理,是否会发生其他问题?或者有什么其他的点需要我们关注的吗?