SurfaceView를 사용해서 그래픽을 업데이트하는 프로그램입니다.

중간에 홈키로 나갔다가 다시 게임을 실행하면 onPause, onResume이 잘 실행되어서 돌아가는데요,
제 메뉴를 통해서 스레드를 중지하고 홈키를 누를시, 다시 게임으로 돌아오면 먹통이 되어버립니다.
(재시작시 onResume, SurfaceCreated를 부르지 않네요)

혹시 왜 그런지 조언을 부탁드릴수 있을까요?



* 아래는 제 메뉴 입니다.
public boolean onCreateOptionsMenu(Menu menu)
    {
        menu.add(0, 1, 0, "Pause / Resume");
        menu.add(0, 2, 0, "Sound On / Off");
        menu.add(0, 3, 0, "Exit");
        return true;
    }

 public boolean onOptionsItemSelected(MenuItem item)
    {
     switch (item.getItemId())
        {
         case 1:
          if (gr.threadWait)
          {
           gr.runThread.resumeThread();
          }
          else
          {
           gr.runThread.pauseThread();
          }
       break;
         case 2:
          if (gr.mute)
          {
           gr.mute = false;
          }
          else
          {
           gr.mute = true;
          }
       break;
         case 3:               
          System.exit(0);
       break;
        }
     return true;
    }



* 아래는 surfaceView안에 thread 제어 관련 부분 입니다.

... 스레드 내부에서
public void pauseThread()
  {
   threadWait = true;
         synchronized (this)
         {
          this.notify();
         }
  }

  public void resumeThread()
  {
   threadWait = false;
      synchronized (this)
      {
       this.notify();
      }
  }


public void surfaceCreated(SurfaceHolder holder)
 {
  try
  {
   runThread.start();
   threadRunning = true;
  }
  catch (Exception e)
  {
   runThread = null;
   runThread = new RunThread();
   runThread.start();
   threadRunning = true;
  }
 }

 public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3)
 {
 }

 public void surfaceDestroyed(SurfaceHolder holder)
 {
  Log.v("MyLog","Surface Destroyed");
  boolean running = true;
  threadRunning = false;  
  
        while (running)
        {
             try
             {
              runThread.join();
              running = false;
             } catch (InterruptedException e) {}
        }
 }