0

私は単純なゲームを作成しています。最初に実行すると、問題なく完全に実行されます。レベルを完了すると、ハイスコア画面が開き (以下の run() メソッド)、次にゲームをプレイするときに、最初のラウンドの約 5 分の 1 の速度で実行されます。どちらの場合も完全に実行されるタイマーである別のスレッドがあります。私はコードを調べましたが、2回目のラウンドで実行が遅くなる理由が見つかりませんか? 何か案は?

以下は、メニュー画面からレベルを開くコードです。

    public void fieldChanged(Field inField, int inContext){
    final int level;

    if(inField == button1)
        level = 1;
    else
        if(inField == button2)
            level = 2;
        else
            if(inField == button3)
                level = 3;
            else
                if(inField == button4)
                    level = 4;
                else
                    level = 0;                  //Ensures variable is initialised

    game = new Game(level);

    UiApplication.getUiApplication().pushScreen(game);

    _invokeID = getApplication().invokeLater(new Runnable(){

    public void run(){
            if (game.getActive() == false){
                getApplication().cancelInvokeLater(_invokeID);
                getUiEngine().popScreen(game);

                Dialog.inform("Final Score: " + String.valueOf(game.getScore()));
                hs = new HighScore(game.getScore(), game.getTime(), level);
                UiApplication.getUiApplication().pushScreen(hs);

                game = null;                
            }
        }
    }, 500,true);
}
4

1 に答える 1

0
  1. jconsole / visualvmなどを使用して、プログラムのJavaプロセスJVMのヒープ/ CPU使用統計を確認してください。

  2. JVM が頻繁にガベージ コレクションを実行している場合は、プロセスがヒープ メモリを使い果たしていることを示しており、問題に対処する必要があります。

調査結果をお知らせください。

于 2013-01-27T17:34:25.957 に答える