疑似js脚本被卸载

cocos-js生成的Android游戏,当切换到桌面又或者是其他应用一段时间后切回来,大概率会出现:界面正常显示,所有循环播放的动画仍然正常播放,按钮点击也会有放大效果,但所有按钮的回调函数都无法触发,update函数中的脚本也不再执行(特意在update中加了cc.log,出问题后无法再看到日志输出,可以认为是脚本已失效)。怀疑是js脚本已被卸载。不知道有没有其他的朋友遇到这样的问题,求解决方案T_T

忘记说了 cocos版本为 3.10 -_-!

同样用3.10 很久之前遇到差不多的问题。解决方案为优化前端代码,可能脚本哪里写错了或者运行不过来了。

根据网上一些大大的文章以及自己测试,基本已经确定了问题。当app切换到后台且系统内存不够时,有可能会被系统回收,这时再切回前台,activity会被重新创建,并恢复你之前的view。因此界面元素虽然都还在,但数据(js脚本)已经被清除了。目前解决方案为:发现activity再次被创建(onCreate被再次调用)时,直接重启应用,这样虽然不够平滑,至少不会出现界面元素点击无效的情况。
另外经测验发现,今天头几次启动app并置后台,很快就被回收了,但多几次之后就要放置很久才会被回收。到了下午快下班时已经复现不了。看来对于经常使用的app,Android系统的回收优先级排得很后,因此只要app被正常使用,应该很难碰到该问题。
至此问题已基本解决,此贴结贴。