2012-08-07 3 views
1

표면보기에있는 스레드에 문제가 있습니다. 휴대 전화를 잠그면 onPause/onResume하는 방법을 이해할 수 없습니다. 내가 무엇을하더라도, 전화 잠금/잠금 해제 후에 스레드가 응답하지 않습니다. 활성에서Android Surfaceview 스레드가 응답하지 않습니다.

:

@Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     surfaceView.SurfaceView_OnResume(); 
    } 

    @Override 
    protected void onPause() { 
     // TODO Auto-generated method stub 
     super.onPause(); 
     surfaceView.SurfaceView_OnPause(); 

    } 

스레드에서 서피스 뷰 SurfaceView

public void SurfaceView_OnResume() { 
      if (null != surfaceViewThread) { 

       surfaceViewThread.setRunning(true); 
       surfaceViewThread.notify(); 
      } 

     } 

     public void MySurfaceView_OnPause() {   
      surfaceViewThread.setRunning(false); 

     } 

@Override 
    public void surfaceDestroyed(SurfaceHolder holder) { 
     // TODO Auto-generated method stub 
     boolean retry = true; 
     myGameThread.setRunning(false); 
     while (retry) { 
      try { 
       myGameThread.join(); 
       retry = false; 
      } catch (InterruptedException e) { 
      } 
     } 
    } 

물 :

public void setRunning(boolean run) { 
     runFlag = run; 

    } 
+1

코드를주세요. =) – AMerle

+0

아무에게도 말하지 마십시오. –

답변

0

Thread.setRunning (부울 B)는 안드로이드 API에 아니다. 여기에서 확인할 수 있습니다. http://developer.android.com/reference/java/lang/Thread.html

스레드가 필요하면 Thread (Object)가 아닌 Runnable (Interface)를 사용하는 것을 선호합니다.

내 스레드 사이클을 제어하기 위해, 나는 내 방법을 설계한다 :이 같은 실행() ...

run(){ 
    while(threadRun){ 
      ...//What you want to do in the thread. 
      while(threadPause){ 
      } 
    } 
} 

부울 : threadRun이 Activity.onDestroy (false로 바뀝니다), 또는 다른 어떤 시간을 정말로 스레드를 종료하고 싶습니다.

부울 : threadPause ... Activity.onPause()에서 false로 설정하고 Activity.onResume()에서 true로 설정합니다.

관련 문제