현재 메인액티비티에서 어떤 작업을 하면서 스레드를 돌리고 있습니다..


그런데 옵션버튼을 누르면 현재 화면과 다른 액티비티로 화면이 넘어가서 현재의 정보를 보여줄수 있게 만들어 져 있는데요...


스레드를 돌리고 있는중에 잠시 현재 페이지를 멈춰 놓고   pauseGame()를  호출하여 wait를 이용해서 스레드를 잡아 놓았는데


다른 화면으로 넘어가면서


surfaceDestroyed를 호출하면서 문제가 생기는것 같아서 surfaceDestroyed에서는 아무작업도 안하게 설정해 놓았습니다..


화면으로 다시 돌아올경우에는 2번째 호출된 액티비티에서 static으로 선언된  restartGame()을 호출하고 있습니다.


스레드가 한번 만들어지면 다른 화면을 불럿을때 멈췄있다가 불러온 액티비티가 종료되면 원래있던 화면으로 돌아가는 


것을 구현 하려고 하는데요 현재 따로 따로 만들어 져서 작업을 진행했는데 붙이려니까 잘 안되고 있네요...





간략 한 소스 코드 


쓰레드 클래스 

public void run()

{

while (canRun)

{

try

{


synchronized (mSurfaceHolder)

{

if (fTime <= 10)

{

if (iStage < 5)

{

}

else

// stage 끝나면

{

}

}

else

// 타임 오버

{

....

}

}

}

catch (Exception e)

{

// TODO: handle exception

e.printStackTrace();

}

finally

{

if (canvas != null)

{

mSurfaceHolder.unlockCanvasAndPost(canvas);

}

}


synchronized (this)

{

if (isWait) //일시 중지를 시켜주려고 함

{


try

{

// 이부분에서 정지 

Log.i("isWait", "----wait()---");

wait();

}

catch (Exception e)

{

}

}

}

}

}


public void pauseNResume(boolean wait) { isWait = wait; synchronized (this) { this.notify(); } }





서페이스뷰 클래스 ( 서페이스 뷰 클래스 안에 스레드가 있습니다.)

static public void pauseGame()

{

imgThread.pauseNResume(true);

}


static public void restartGame()

{

imgThread.pauseNResume(false);

}


public void surfaceCreated(SurfaceHolder holder)

{

Log.i("surfaceCreated", "----call---");

// TODO Auto-generated method stub

if (GameFrame.MenuClick == 0)

{

Log.i("imgThread", "----0start---");

imgThread.start();

}

else if (GameFrame.MenuClick == 4)

{

this.notify();

Log.i("4notify", "---4-call---");

Log.i("GameFrame.MenuClick", GameFrame.MenuClick + "");

}

else

{

imgThread.notify();

Log.i("surfaceCreated", "----call---");

Log.i("GameFrame.MenuClick", GameFrame.MenuClick + "");

}

}


public void surfaceDestroyed(SurfaceHolder holder)

{

Log.i("surfaceDestroyed", "----call---");

}



두번째 불러온 페이지에서는 안드로이드 백버튼을 누를때 다시 시작하는 함수를 달아놓았음...




하루내내 해도 잘 안되고 갑갑한 심정에 이렇게 글을 올립니다... 좀 도와주세요..ㅠㅠ... 신참이라 여간 힘들다는....


스레드 관련해서 이해가 많이 안가는데...게시판을 뒤져 봐도 잘 모르겠어서 질문 드립니다..


고수님들 부탁드려요!~