ANR Warning, 游戏闪退

  • Creator 版本号: 1.5.1 / 1.6

  • 目标平台:Android

  • 详细报错信息,包含调用堆栈: ANR Warning,RemoteViews can only be used once ,if not ,it may cause ANR in hosts such as Laucher,SystemUI. keys for search

  • 做了什么操作引起的 Bug: 真机测试进入游戏2到3分钟左右闪退, 多数是在触摸点击按钮后闪退, 偶尔会在游戏运行的某个画面闪退. Creator模拟器调试时没有问题.

  • 手机型号: 金立

  • 操作系统: Android 4.4.2

  • 编辑器之前是否有其它报错: 无

  • 出现概率: 进入游戏2到3分钟, 极少10分钟左右

这种问题一般是ui线程占用时间太久,android上ui线程如果卡住5秒就会产生这个。我们引擎是跑在gl线程,就算gl线程死循环也不会导致anr。
产生anr的原因有很多,有可能跟你们用的第三方java库有一点关系吧。单凭这一行很难判断的,anr应该也有java堆栈的。能重现的话,有堆栈,要查应该不难。

1赞

过多的使用本地存储会导致这个问题吗?

你是说cc.sys.localStorage么?
我查阅了localStorage的相关代码,发现相关操作并不会post事件到UI线程执行,所以理论上应该不会导致anr。

我取消了所有场景的自动释放资源,问题解决了.

这似乎不科学啊,场景资源的释放都是在GL线程处理的,GL线程的操作不应该导致ANR才是。

adb测试时, logcat会时不时的报本条错误信息, 当闪退时最后一条信息也是这个.
取消所有场景自动释放资源后, logcat也会时不时的报本条错误信息, 但确实没有闪退了.
或许本身不是ANR的原因, 而是我勾选自动释放资源的原因?(有的场景我勾选了, 有的并没有勾选)

有可能,因为你反馈的anr这个日志,估计是其他进程导致的,并不是游戏进程。
如果闪退应该会有崩溃堆栈,闪退应该不会出现anr才是,anr应该会导致UI卡住,并且弹出“程序未响应”的UI对话框。