在测试严重依赖于 的游戏时System.currentTimeMillis()
,我们遇到了一个恼人的错误。
我们的游戏使用一组 delta 时间戳来指示某些事情应该何时发生。这些时间戳与正在播放的一段音乐相匹配。
在家测试完全没有问题。在我们家进行测试时,不可能重现该错误。
但是,在汽车中行驶时进行测试,在城市之间进行测试,会给我们带来时间戳和音乐之间的同步问题。我最好的猜测是Android冻结了系统,包括系统计时器,因为它正在切换网络或寻找信号?
我试过在游戏中插入一个假的打嗝,当我按下某个按钮时让线程休眠几秒钟。这会冻结屏幕(显然),但是当睡眠结束时,一切仍然正常同步。
重现此错误的唯一方法是乘汽车、公共汽车或火车旅行——这当然是大多数人在玩我们的游戏时最可能出现的地方。
问题当然是,
该怎么办?
有没有人有任何想法?