10

AndEngine を使用して、多くの動くスプライトを扱うゲームを作成しています。一貫性がありませんが、最終的にログ cat (threadid=3: シグナル 3 に反応しています) にメッセージが表示され、ゲームがフリーズします。このエラーはどういう意味ですか? それが発生するコードを絞り込みました(マークされています):

private void levelComplete(){
        runOnUiThread(new Runnable() {
            public void run() {
                 Toast.makeText(TestGFX5Activity.this, "Level Complete", Toast.LENGTH_SHORT).show();
            }
        });
        Log.e("Level Complete","Going to reset values");
        //Reset values
        level++;
        fillerCount = (originalNumberOfFillers + level - 1);
        areaFilled=0;
        fillAreaPercent = 0;

        //Rid scene of sprites
        for(int x=0;x<=fillerNum;x++){  
            filler[x].body.setActive(false);
            scene.detachChild(filler[x].sprite);
            filler[x].active=false;
            filler[x].scale=originalSpriteScale;
            filler[x].body.setUserData("inactive");
        }
        levelText.setText("Level: "+Integer.toString(level));
        fillersLeftText.setText("Balls left: "+Integer.toString(fillerCount));
        percentFilledText.setText("0%");
        fillerNum = -1;

        Log.e("Level Complete","values reset");

        randx = random.nextInt(650) + 25;
        randy = random.nextInt(400) + 25;
        randix = random.nextInt(10);
        randiy = random.nextInt(10);
        if(randix%2==0)
            ix = 5;
        else
            ix = -5;
        if(randiy%2==0)
            iy = 5;
        else
            iy = -5;

        Log.e("Level Complete","Creating destroyer"); //This line executes
        destroyer = new Ball(randx, randy, destroyerTR, getVertexBufferObjectManager(), ix, iy); //Code breaks here (*sometimes*)
        Log.e("Level Complete","complete"); //This line does not
    }

最も奇妙なことは、コードがクラッシュする前に 4/5 回 (通常は 3 ~ 4 回、最大 9 回レベルアップできます) のように機能することです。何が原因なのかわかりません。誰にもアイデアはありますか?

4

2 に答える 2

9

ANR状態が発生すると、Androidランタイムはすべてのdalvik VMに信号3を送信して、スタックトレースをダンプしてANRレポートを生成します。strackトレースのダンプにより、dalvikはアプリを一時的に停止します。

ANRのlogcat(イベントおよびメインバッファー)を確認することをお勧めします。また、/ data / anrでANRトレースを確認して、問題の原因を確認してください。

于 2012-07-25T17:02:27.333 に答える