1

そのため、ホームボタンを押すとプログラムがフォーカスを失い、再開時にアクティビティを正常に戻すことができます。残念ながら、私が使用している方法では、フォーカスを失わない問題で画面が変わるとスレッドがハングしますすぐに。

編集済み -- onResume をメイン アクティビティに配置

@Override
protected void onPause()
{
    super.onPause();
    synchronized (mPauseLock) {
        mPaused = true;
    }
    return;
}
@Override
public void onResume() {
    super.onResume();
    synchronized (mPauseLock) {
        mPaused = false;
        mPauseLock.notifyAll();
    }
}

public class ThreadClass extends Thread
{
    boolean isRunning;
    public void BeginThread()
    {

        if (mGameIsRunning) {
            onResume();
        }else{
            if(isRunning)return;
            isRunning=true;
            start();
            mGameIsRunning=true;
        }
    }



    public void run()
    {
        Canvas canvas;
        while(isRunning)
        {
            canvas=null;
            try
            {
                canvas = canvasClass.surfaceHolder.lockCanvas(null);
                synchronized (canvasClass.surfaceHolder)
                {
                    //processClass.processGame();
                    canvasClass.onDraw(canvas);
                }
            }finally{
                if(canvas!=null)
                {
                    canvasClass.surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
            synchronized (mPauseLock)
            {
                while (mPaused)
                {
                    try
                    {
                        mPauseLock.wait();
                    } catch (InterruptedException e) {

                    }
                }
            }
        }           
    }
}

Home を押すとアクティビティが一時停止し、Back を押すとスタックからスローされるようにするには、何を変更する必要がありますか? また、説明したように、画面の向きが変わると同じ問題が発生します。

4

1 に答える 1

0

onResume がスレッド クラス内にあるのはなぜですか? それが実際のコードである場合は、それをアクティビティ クラスに削除します。コードの残りの部分は正常に見えます。

于 2011-07-18T08:46:40.487 に答える