2013-05-14 3 views
0

안녕하세요 내가 안드로이드 (자바)의 새로운 해요 다시 시작, 그리고 난 내가의 클래스 내에 타임 전자 새 스레드 (5 초마다)를 정의스레드의 Runnable - 중지하고

스레드의 사용에 문제가있는 내 안드로이드 프로젝트. 은 "mContinueThread"변수는 스레드

public void StartTrack() 
{ 
    mContinueThread=true; 
    if (!mThreadIsStarted) 
    { 
     mThreadIsStarted=true; 
     t.start(); 
    } 
    else 
    { 

    } 
} 

시작 방법 StartTrack는()가 5 초마다

학급
r = new Runnable() { 
    public void run() { 
     while (mContinueThread) { 
      try { 
       Thread.sleep(MILLISEC_BEFORE_RELOAD); 
       mHandler.sendEmptyMessage(GET_TRACKING); 
      } 
      catch (Exception e) 
      { 

      } 
     } 
    } 
}; 
t = new Thread(r); 

을 cicle 위해 사용되며 방법은 정지 아웃도 있습니다 은 "mContinueThread"변수를 사용하여 스레드 :

public void LogOut() 
{ 
    //STOP THREAD 
    mContinueThread=false; 
    .... 
} 

클래스에서 로그 아웃() 메소드는 StartTrack() 메소드인지 스레드가 정지되지만 실행되면 다시 스레드의 실행을 다시 시작하는 방법을 모르겠다.

나를 도와 줄 수 있습니까?

답변

0

방문하십시오

내 수업에서 그냥 실행 가능한 객체를 정의 할 수 있지만 새로운 스레드. StartTrack 방법()에서

, 스레드가 아직 인스턴스화되지 않은 경우, 내가 만들고 스레드가 시작되면, 나는 그만 ") (로그 아웃"는에서 방법을

public void StartTrack() 
{ 
    mContinueThread=true; 

    if (!mThreadIsStarted) 
    { 
     mThreadIsStarted=true; 
     t = new Thread(r); 
     t.start(); 
    } 
} 

을 시작하고, 나는 그것을 Null로 설정했다. 이런 식으로

, "StartTrack()"메소드의 다음 호출에서, 나는 그래서 내가 StartTrack 방법을 먼저 확인 (호출되는 새로운 스레드 매번 만들 필요가 다시

public void LogOut() 
{ 
    mContinueThread=false; 
    if (mThreadIsStarted) 
    { 
     //THREAD STOP 
     mContinueThread=false; 
     mThreadIsStarted=false; 

     //THREAD TO NULL 
     t=null; 
    } 

    ... 
} 
0

스레드를 다시 시작할 수 없습니다. 스레드가 실행을 마친 후에는 DEAD 상태에 도달합니다. 그리고 사자 (DEAD)가 무엇 이건 현실 세계 나 자바 세상에서 다시 살 수 없습니다.

+0

그것을 다시 만들 수있다 이미 실행 중이 아닙니다.) 스레드 수를 알지 못하고 x 다른 스레드를 만들려면 어떻게해야합니까? 각자 다른 이름을 정의해야합니까? 나는 방법을 모른다. 도와 주시겠습니까? – user2381742

0

스레드를 종료 한 후에 다시 시작할 방법이 없습니다. 새로운 시작을 시작할 수 있습니다.

+0

그래서 StartTrack 메서드가 호출 될 때마다 새 스레드를 만들어야합니다. (이미 하나가 실행되고 있지 않다는 것을 먼저 확인합니다.) 어떻게 스레드 수를 알지 못하고 x 개의 다른 스레드를 만들 수 있습니까? 각자 다른 이름을 정의해야합니까? 나는 방법을 모른다. 너 나 좀 도와 줄 수있어? – user2381742

관련 문제