我的 LibGDX 游戏中的 Activity 行为非常奇怪 - 当我玩游戏然后按下电源按钮将设备发送到睡眠模式时。我已将日志添加到 Activity 的回调方法中,这就是我所看到的:
05-14 16:32:51.694: I/BP(32656): onPause()
05-14 16:32:51.704: I/BP(32656): onStop()
05-14 16:32:51.854: I/BPApplication(32656): BPApplication.onConfigurationChanged()
05-14 16:32:51.854: I/BP(32656): BP.onConfigurationChanged()
在这一点上,一切顺利。还有一些奇怪的开始:
05-14 16:40:42.774: I/BP(32656): onRestart()
05-14 16:40:42.774: I/BP(32656): onStart()
05-14 16:40:43.064: I/BP(32656): onResume()
05-14 16:40:44.566: I/BP(32656): BP.onConfigurationChanged()
05-14 16:40:44.566: I/BPApplication(32656): BPApplication.onConfigurationChanged()
05-14 16:40:49.761: I/System.out(32656): screen resize w = 480, h=800 // libGDX callback
05-14 16:40:49.911: I/System.out(32656): GAME RESUMED... // libGDX callback
05-14 16:40:50.471: I/System.out(32656): screen resize w = 800, h=480 // libGDX callback
05-14 16:40:59.010: I/System.out(32656): GAME PAUSED // libGDX callback
05-14 16:41:00.711: I/BP(32656): onPause()
05-14 16:41:00.801: I/BP(32656): onStop()
05-14 16:41:00.851: I/BP(32656): onRestart()
.... this cycle repeats 5 - 10 times ....
如您所见,问题是设备休眠时 Activity.onRestart() 和进一步的回调调用。这在近一分钟内重复了 5-10 次。
我不明白为什么 Activity 会重新启动以及执行此操作的原因。我的游戏我有计费服务 v2(由其他程序员实现)并设置 AlarmManager 以恢复免费游戏。
我对这个问题完全感到困惑,所以任何帮助都将不胜感激。
更新
似乎 libGDX 中的交易 - 我已经构建了另一个具有相同库版本的项目,它的行为与我的游戏完全一样。