2012-09-24 3 views
0

안녕하세요 저는 Android에서 서비스를 만들고 있습니다. 서비스에서 나는 5 분마다 주기적으로 코드를 실행하기를 원한다. 같은 스레드를 사용하고 있습니다. 34 : 40.869 : E/AndroidRuntime (12393) : 치명적인 예외 : 09- 주요 아래 Android - 서비스 생성 오류

내 코드

@Override 
public void onCreate() { 
    super.onCreate(); 
    Toast.makeText(this, "Service created ...", Toast.LENGTH_LONG).show(); 

    Thread thr = new Thread() { 
    public void run() { 
     try { 
      sleep(20000); 
     } catch (InterruptedException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     finally{} 
     } 
    }; 
    while (true) { 

     // Some code1 

     thr.start(); 
     while(thr.isAlive()){} 

     //some code 2 
    } 

} 

나는 다음과 같은 오류

09-24 (21)를 얻고있다 24 21 : 34 : 40.869 : E/AndroidRuntime (12393) : java.lang.RuntimeException가 : java.lang.IllegalThreadStateException : : 스레드 이미 시작 서비스 com.example.find.your.friend.iith.updateService를 만들 수 없습니다.

당신은 어디에서 잘못 가고 말해 주시겠습니까?

답변

0

이미 살아 스레드를 시작할 수 없습니다. while(true)이 영원히 실행되므로 thr.start()이 계속해서 호출됩니다. 시도 :

while (true) { 

    // Some code1 

    if(!thr.isAlive()) { 
     thr.start(); 
    } 
    while(thr.isAlive()){} 

    //some code 2 
} 
+0

이 문제를 해결하지 못했습니다. 여전히 동일한 오류가 발생합니다 ... – deepak

+1

더 이상 요점은 중지 되었더라도 전에 시작된 스레드를 시작할 수 없다는 것입니다. IllegalThreadStateException을 throw합니다. – NickT

+0

while 루프를 "잠시 기다려주십시오"다른 방법으로 코드를 실행 한 다음 나머지 코드를 실행할 수 있습니다. – deepak

0

왜 알람 서비스를 사용하지 않습니까? 그것은 당신의 문제에 가장 적합한 솔루션입니다.