私のLibgdx Androidゲームで少し問題があります。画面を変更すると、新しい画面が作成されるとすぐにアニメーションが開始されます。それはデスクトップ上で完全に細かく、滑らかに動作しますが、Android搭載デバイスでこれを実行すると、新しいスクリーンが作成され、アニメーションの数フレームがスキップされたように見えるときに遅れが表示されます。GC_FOR_ALLOCATIONが完了するのを待つことはできますか?
いくつかの調査の後、私はそれゆえGC_FOR_ALLOCが複数回呼び出された、新しい画面を作成する作成するために多くの新しい画像やその他のオブジェクトを呼び出すためであることを発見:
04-23 20:26:11.411: D/dalvikvm(18461): GC_FOR_ALLOC freed 385K, 48% free 8809K/16880K, paused 12ms, total 12ms
04-23 20:26:11.531: D/dalvikvm(18461): GC_FOR_ALLOC freed 454K, 48% free 8867K/16880K, paused 12ms, total 12ms
04-23 20:26:11.651: D/dalvikvm(18461): GC_FOR_ALLOC freed 475K, 48% free 8903K/16880K, paused 13ms, total 13ms
04-23 20:26:11.746: D/dalvikvm(18461): GC_FOR_ALLOC freed 473K, 48% free 8942K/16880K, paused 12ms, total 13ms
04-23 20:26:11.856: D/dalvikvm(18461): GC_FOR_ALLOC freed 481K, 47% free 8967K/16880K, paused 12ms, total 12ms
だから私の質問は次のとおりです。 ができ私は何とか私のアプリがこれらの操作が完了するのを待っています。
実際には、 gcが割り当て操作を完了した後にアニメーションを開始できるように、ガベージコレクタの状態などを取得する必要があります。
ありがとうございました!
Omg、あなたはちょうどgetRawDeltaTime()に言及して私の問題を解決しました!以前私は_n_最後のフレームのスムージングされた値を返すgetDeltaTime()parametrを使ってrenderメソッドを呼び出していました!新しいシーンを作成するには時間がかかり、平均フレーム時間はしばらく長くなりました。そして、それは私が遅れと呼ばれるものでした!このメソッドはスムージングなしで2つのフレーム間の正確な違いを返すので、getRawDeltaTime()でrenderメソッドを呼び出すと解決されます。私の問題は間違っていると分かりました。新しいフレームが作成されたときに同じフレームでガベージコレクタが仕事を終えました:)ありがとうございました! –
問題はありません、私はあなたがそれを解決してうれしいです:) –