rph*_*101 9 multithreading android freeze andengine
我正在使用AndEngine制作一款可以处理大量移动精灵的游戏.它是不一致的,但最终我在log 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
}
Run Code Online (Sandbox Code Playgroud)
最奇怪的是,在崩溃之前,代码的工作方式是4/5次(我通常可以升级3到4次,最多9次).我不确定是什么原因造成的.有人有主意吗?
当ANR条件发生时,Android运行时向所有dalvik VM发送信号3,以使它们转储其堆栈跟踪以生成ANR报告.strack trace的转储将导致dalvik暂时暂停你的应用程序.
我建议你查看ANR的logcat(事件和主缓冲区).还要检查/ data/anr以获取ANR跟踪以检查导致问题的原因.
| 归档时间: |
|
| 查看次数: |
19233 次 |
| 最近记录: |