将我的项目从Eclipse导出到可执行的Java程序后,程序会随机停止响应。我无法找到导致它的任何特定事件或行为。我能想到它发生的唯一原因是无限循环,但我唯一拥有的是:
for(int i =0;i<pipes.length;i++){
if((powerUp.bound.overlaps(pipes[i].bounds)|| (powerUp.bound.overlaps(pipes[i].bounds2)))|| (powerUp.bound.overlaps(blocks[i].bound))){
powerUp.position.y=(float) ((HEIGHT/4)+((HEIGHT/2)* (Math.random())));
i=0;
}
}
这基本上可以确保powerUp不会在对象中产生,它们有足够的空间供它们产生。
我的代码中没有其他连续循环,因此还有其他原因导致#34;停止响应&#34;错误?
答案 0 :(得分:2)
你肯定需要找出发生挂起的地方。请记住 - 它完全可能与&#34; for&#34;无关。循环:它可以在任何地方。
这是一个非常安全的赌注,并且#34;挂起&#34;是一个应用程序错误,而不是&#34; JVM错误&#34;。
建议:
在IDE调试器(例如,Eclipse或Android Studio)中执行您的程序,并在&#34;挂起&#34;时查看线程/线程堆栈。发生;
或者,在调试器中逐步执行程序,直到遇到挂起。
写&#34; printf&#34;或者&#34;吐司&#34; &#34; for&#34;之前/之后的陈述循环以验证&#34;挂起&#34;实际上发生在循环内;
运行strace,Windows Process Explorer或类似的操作系统级工具,查看程序挂起之前的最后一件事。
如果您有任何系统和/或应用程序日志,请务必检查它们。
我不知道您的目标环境是什么。但是,如果有可能是Android,这篇文章可能有所帮助:
祝你好运 - 请回复你发现的内容!