LibGDX ゲームでアクティビティの非常に奇妙な動作があります。ゲームをプレイしてから電源ボタンを押すと、デバイスがスリープ モードになります。アクティビティのコールバック メソッドにログを追加したところ、次のように表示されました。
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() とさらにコールバックが呼び出されることです。そして、これが約1分間に5~10回繰り返されます。
アクティビティが再起動する理由と、この操作を実行しているものがわかりません。私のゲームでは、課金サービス v2 (他のプログラマーによって実装されています) があり、無料のゲームを復元するために AlarmManager をセットアップしています。
私はこの問題に完全に混乱しているので、助けていただければ幸いです。
アップデート
libGDX を扱っているようです - 同じライブラリ バージョンで別のプロジェクトをビルドしましたが、それは私のゲームとまったく同じように動作します。