Warum bin ich immer: threadid=3: Reaktion auf signal 3 und game freeze (AndEngine)?
Ich bin mit AndEngine machen ein Spiel, das sich mit einer Menge von beweglichen sprites. Es ist inconsistant Wann, aber irgendwann bekomme ich eine Meldung in die log cat (threadid=3: Reaktion auf signal 3) und das Spiel friert ein. Was hat dieser Fehler zu bedeuten? Ich habe verengt in den code, wo es passiert (es ist markiert):
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
}
Die seltsamste Sache ist, dass der code funktioniert wie 4/5 mal (ich kann in der Regel level 3 oder 4 mal, und bis zu 9-mal), bevor es abstürzt. Ich bin mir nicht sicher, was es bewirkt. Jemand irgendwelche Ideen?
- Ich habe das gleiche problem. Wie lösen Sie es?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ein ANR-Zustand passiert, ist die Android-Runtime-signal 3 alle dalvik-VMs, um zu bewirken, dass Sie werfen Ihre stack-traces zu erzeugen, die ANR Bericht. Der dump von strack trace verursachen dalvik kurz anhalten Ihrer app.
Ich schlage vor, Sie schauen auf die logcat (event und main-Puffer) für ANRs. Überprüfen Sie auch /data/anr für die ANR-Spuren zu überprüfen, was das problem verursacht.
Durch die überprüfung der /data/anr/traces.txt Datei, können Sie feststellen, ob es gibt Dutzende von threads, das mag der Grund sein, warum die Anwendung eingefroren ist.