0

初めての 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();
     }
   }
  }

私は何を間違っていますか?

4

2 に答える 2

0

ほとんどの場合、アプリケーションは再開時に停止したスレッドを開始しようとしています。これによりエラーが発生し、アプリケーションがクラッシュします。

Logcat ログを見て確認してください。

于 2012-09-17T21:43:38.273 に答える