Android 线程导致离开时出现错误消息并返回游戏应用程序
在玩我的线程游戏后点击主页,然后点击应用程序图标,然后再次点击我的应用程序图标,我得到一个digger已意外退出错误,它将我带回通用应用程序屏幕,此时我可以再次点击我的应用程序图标,它将我带到游戏中,它运行正常。我希望在我重启我的应用程序时,我应该对这个线程做些什么来防止那个恼人的消息。可能是在一个onStop或onPause方法中。以下是我的线程代码片段:Android 线程导致离开时出现错误消息并返回游戏应用程序,android,multithreading,Android,Multithreading,在玩我的线程游戏后点击主页,然后点击应用程序图标,然后再次点击我的应用程序图标,我得到一个digger已意外退出错误,它将我带回通用应用程序屏幕,此时我可以再次点击我的应用程序图标,它将我带到游戏中,它运行正常。我希望在我重启我的应用程序时,我应该对这个线程做些什么来防止那个恼人的消息。可能是在一个onStop或onPause方法中。以下是我的线程代码片段: getHolder().addCallback( new SurfaceHolder.Callback() { /
getHolder().addCallback(
new SurfaceHolder.Callback() {
//@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
gameLoopThread.setRunning(false);
while (retry) {
try {
gameLoopThread.join();
retry = false;
}
catch (InterruptedException e) {}
}
}
//@Override
public void surfaceCreated(SurfaceHolder holder) {
screenWidth =gameView.getWidth();
screenHeight = gameView.getHeight();
createSprites();
gameLoopThread.setRunning(true);
gameLoopThread.start();
}
//@Override
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
}
});
我有一个gamethread类:
import android.graphics.Canvas;
import android.view.SurfaceHolder;
public class GameLoopThread extends Thread {
static final long FPS = 10;
private GameView view;
private boolean running = false;
public GameLoopThread(GameView view) {
this.view = view;
}
public void setRunning(boolean run) {
running = run;
}
@Override
public void run() {
long ticksPS = 200 / FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(10);
} catch (Exception e) {}
}
}
}
我尝试的一件事是将surfaceDestroyed方法改为just
public void surfaceDestroyed(SurfaceHolder holder) {
gameLoopThread.setRunning(false);
}
但这没用。这是什么平台?安卓它应该被这样标记。这是很多格式不好的代码,您可能希望将其格式设置得更干净一点。此外,应用程序将出于某种原因生成错误消息。检查日志并将stacktrace添加到您的问题中。