我正在做我的第一個android遊戲,我的遊戲線程有問題。事情是,當我暫停它,並按回或主頁按鈕,我得到一個錯誤。 「活動(在我的應用程序遊戲)沒有響應我的代碼:?安卓主題暫停/恢復主屏幕按下後沒有響應
public class GameLoopThread extends Thread {
static final long FPS = 10;
private GameView view;
private boolean running = false;
private Object mPauseLock;
private boolean mPaused;
public GameLoopThread(GameView view) {
this.view = view;
}
public void setRunning(boolean run) {
running = run;
mPauseLock = new Object();
mPaused = false;
}
@Override
public void run() {
long ticksPS = 1000/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) {
}
synchronized (mPauseLock) {
while (mPaused) {
try {
mPauseLock.wait();
} catch (InterruptedException e) {
}
}
}
}
}
/**
* Call this on pause.
*/
public void onPause() {
synchronized (mPauseLock) {
mPaused = true;
}
}
/**
* Call this on resume.
*/
public void onResume() {
synchronized (mPauseLock) {
mPaused = false;
mPauseLock.notifyAll();
}
}
}
我在做什麼錯
你能提供一個LogCat輸出嗎? –
你在那裏有一個while循環:while(mPaused){...你等待一次,那就夠了,或者應該是。 – fonZ
我不認爲你必須這麼多同步,因爲那隻適用於可以由多個線程修改的對象。 – fonZ